假設你使用的是SQL Server 2005或2008,應該這樣做。雖然它可能比您預期的要長一些:-)您可以將代碼的主要部分放入函數中,並在您每次需要創建數據庫時調用它。
declare @instance_name nvarchar(200),
@system_instance_name nvarchar(200),
@registry_key nvarchar(512),
@path_data nvarchar(260),
@path_log nvarchar(260),
@value_name nvarchar(20),
@script nvarchar(4000);
set @instance_name = coalesce(convert(nvarchar(20), serverproperty('InstanceName')), 'MSSQLSERVER');
exec master.dbo.xp_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\Microsoft SQL Server\Instance Names\SQL', @instance_name, @system_instance_name output;
set @registry_key = N'Software\Microsoft\Microsoft SQL Server\' + @system_instance_name + '\MSSQLServer';
/* determine default location for data files */
exec master.dbo.xp_regread N'HKEY_LOCAL_MACHINE', @registry_key, N'DefaultData', @path_data output;
if @path_data is null
begin
/* this is only executed if we are using the default instance */
set @registry_key = N'Software\Microsoft\Microsoft SQL Server\' + @system_instance_name + '\Setup';
exec master.dbo.xp_regread N'HKEY_LOCAL_MACHINE', @registry_key, N'SQLDataRoot', @path_data output;
set @path_data = @path_data + '\Data';
end;
/* determine default location for log files */
exec master.dbo.xp_regread N'HKEY_LOCAL_MACHINE', @registry_key, N'DefaultLog', @path_log output;
if @path_log is null
begin
/* this is only executed if we are using the default instance */
set @registry_key = N'Software\Microsoft\Microsoft SQL Server\' + @system_instance_name + '\Setup';
exec master.dbo.xp_regread N'HKEY_LOCAL_MACHINE', @registry_key, N'SQLDataRoot', @path_log output;
set @path_log = @path_log + '\Data';
end;
set @script = 'CREATE DATABASE [asst]
ON (NAME = ''asst_dat'', FILENAME = ''' + @path_data + '\yourfile.mdf'' , SIZE = 62, FILEGROWTH = 10%)
LOG ON (NAME = ''asst_log'', FILENAME = ''' + @path_log + '\yourfile.ldf'' , SIZE = 146, FILEGROWTH = 10%);'
exec(@script);
您不能在CREATE DABASE
語句中使用變量。這就是爲什麼你必須創建一個變量來保存命令並將其作爲腳本執行。
的[創建使用默認路徑文件數據庫(http://stackoverflow.com/questions/1637628/create-database-using-file-in-default-path) – Castrohenge 2014-04-15 10:05:26