Общий сценарий настройки базы данных - PullRequest
1 голос
/ 10 сентября 2009

Мы используем SQL и имеем файл сценария для создания базы данных и таблиц. Я пытаюсь написать общий сценарий, который будет выполняться на всех машинах dev / prod Имя файла, которое я даю: FILENAME = N'c: \ Program Files \ Microsoft SQL Server \ MSSQL.3 \ MSSQL \ DATA \ DBname.mdf '

Он работает на моей машине, но не на всех машинах разработчика, так как все имеют разные пути для SQL. Есть ли способ сделать этот параметр общим? Я хочу, чтобы этот скрипт запускался на всех компьютерах, на которых установлен SQL-сервер.

Ответы [ 2 ]

1 голос
/ 10 сентября 2009

Полагаю, проблема в том, что на разных компьютерах экземпляры SQL Server находятся в разных папках. Вы можете проверить в Windows Register, каково имя папки вашего экземпляра:

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

Вы можете найти путь к каталогу с файлами данных.

0 голосов
/ 10 сентября 2009

Если вам необходимо различать определенные части ваших сценариев в зависимости от того, где вы их выполняете, вы можете использовать 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.

...