通用数据库设置脚本

时间:2009-09-10 14:32:57

标签: sql-server database scripting installation

我们正在使用SQL并拥有一个脚本文件来生成数据库和表。 我正在尝试编写一个将在所有dev / prod机器上执行的通用脚本 我给出的文件名是FILENAME = N'c:\ Program Files \ Microsoft SQL Server \ MSSQL.3 \ MSSQL \ DATA \ DBname.mdf'

它适用于我的机器,但不适用于所有开发机器,因为它们都有不同的SQL路径。 有没有办法使这个设置成为通用的? 我想让这个脚本在安装了SQL服务器的所有机器上运行。

2 个答案:

答案 0 :(得分:1)

我想问题是在不同的机器上你有不同文件夹中的SQL Server实例。您可以在Windows注册中注册实例的文件夹名称:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL

示例条目

Name - Data
MSSQLSERVER - MSSQL.1
SQL2k5 - MSSQL.2

然后在另一个分支中,例如:

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\Setup

您可以找到包含数据文件的目录路径。

答案 1 :(得分:0)

如果您需要根据脚本的运行位置区分脚本的某些部分,可以使用SQLCMD。

过去,当我需要执行数据库恢复时,我已经成功使用此方法,并且我知道框之间的数据路径不同。

以下内容应该有效:

SQLCMD -SMyDatabaseServer
       -Q "RESTORE DATABASE $(DatabaseName) FROM DISK = '$(BackupLocation)\$(DatabaseName).bak' WITH NORECOVERY, STATS=10, REPLACE;" 
       -v 
         DatabaseName = MyDatabase 
         BackupLocation = "C:\SomeLocation" 
       -d master 
       -u [User]
       -p [Password]

这是内联查询版本。如果需要使用SQL脚本文件,请将-Q“...”部分更改为-i yourFile.sql,并将查询本身复制并粘贴到sql文件中。 SQLCMD将采用-v开关定义的变量,并替换由-Q或-i定义的查询中的对应项。

有关更详细的参考,请参阅:http://msdn.microsoft.com/en-us/library/ms180944.aspx