- ایجاد دیتابیس
- اضافه کردن فایل داده یا لاگ به دیتابیس
- افزایش اندازه یک فایل موجود (شامل عملیات autogrowth هم می شود)
- restore یک دیتابیس یا Filegroup
File Initialization باعث می شود تا انجام این عملیات طولانی تر شود. SQL Server می تواند از این فرآیند صرف نظر کند و بدون رونویسی فضای تخصیص داده شده با صفر، فوراً آن را تخصیص دهد.
برای اینکار باید به این شکل عمل کنید:



برای پیدا کردن اکانت سرویس SQL Server می توانید از اسکریپت زیر استفاده کنید:
DECLARE       @DBEngineLogin       VARCHAR(100)
 
EXECUTE       master.dbo.xp_instance_regread
 
              @rootkey      = N'HKEY_LOCAL_MACHINE',
 
              @key          = N'SYSTEM\CurrentControlSet\Services\MSSQLServer',
 
              @value_name   = N'ObjectName',
 
              @value        = @DBEngineLogin OUTPUT
 
SELECT        [DBEngineLogin] = @DBEngineLoginبرای تست تاثیر فعال کردن می توانید این اسکریپت را قبل و بعد از فعال کردن اجرا کنید:
CREATE DATABASE TestDatabase ON PRIMARY ( NAME = N'TestDatabase', FILENAME = N'G:\SQL\DATA\TestDatabase.mdf' , SIZE = 51200000KB , FILEGROWTH = 1024KB ) LOG ON ( NAME = N'TestDatabase_log', FILENAME = N'G:\SQL\Log\TestDatabase_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10% ) GO
برای ساخت دیتابیس بالا SQL Server باید ۵۰ GB مقدار ۰ را روی دیسک بنویسد! و البته این کار با فراخوانی یک تابع API ویندوز به نام SetFileValidData انجام می شود.
در تصویر زیر که لاگ SQL است میتوانید از یک نمونه فرآیند ساخت دیتابیس تا قبل از دادن مجوز Perform Volume Maintenance Tasks به اکانت SQL Server را مشاهده می کنید و همانطور که می بینید پر کردن با صفر هم برای فایل داده ای و هم لاگ انجام شده است:


پس از دادن مجوز Perform Volume Maintenance Tasks و فعال کردن دو trace flag با شماره های ۳۰۰۴ و ۳۶۰۵ (با دستور DBCC TRACEON(3605)) و اجرای مجدد اسکریپت ساخت دیتابیس می توانید در لاگ SQL Server در عکس زیر ببینید که فرآیند Zeroing فقط برای لاگ دیتابیس انجام شده است:




