Создание базы данных SQL Server для проблемы пути к файлу mdf на удаленной машине - PullRequest
2 голосов
/ 29 октября 2009

Я пытаюсь создать базу данных MS Sql Server на экземпляре базы данных, запущенном на удаленном компьютере. Когда я это делаю, мне нужно иметь возможность указать путь к файлу базы данных (.mdf). Если я попытаюсь создать базу данных в несуществующей папке, SQL Server просто потерпит неудачу (было бы неплохо, если бы он автоматически создал структуру папок).

Можно ли как-нибудь создать путь к папке на целевом компьютере в SQL, прежде чем я попытаюсь создать базу данных, или, по крайней мере, определить папку по умолчанию для новых баз данных, в которой я мог бы безопасно создать новую базу данных файл

1 Ответ

2 голосов
/ 29 октября 2009

Если у вас есть соответствующие разрешения и включен xp_cmdshell, вы можете:

EXEC xp_cmdshell 'md "<path>"';
--...repeat for each node in the path

Если cmdshell отключен, снова при условии наличия соответствующих разрешений вы можете временно включить его, используя sp_configure:

Древняя статья удалена

Не забудьте вернуть его обратно!

В противном случае, почему вы не можете позволить движку поместить файлы базы данных в их расположение по умолчанию? Если вы используете диск, отличный от C :, вам также необходимо убедиться, что указанный диск вообще существует, и разве вы не должны уточнить у пользователя, можно ли размещать эти файлы в другом месте? Если вы выберете какое-либо произвольное расположение, они могут не знать, где можно проверить наличие активных файлов SQL Server.

Вы можете проверить путь по умолчанию, используя xp_regread (недокументированный, не поддерживается) ... они находятся в реестре в качестве ключей DefaultDataDir и DefaultLogDir для экземпляра по умолчанию в разделе:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer

Если это не экземпляр по умолчанию, проверьте эту статью:

http://foxtricks.blogspot.com/2009/06/how-to-determine-default-database-path.html

Вы делаете это просто для того, чтобы вы могли называть ваши MDF / LDF-файлы так, как вы хотите, вместо dbname-data, dbname-log? Если так, то почему? Вы написали сценарии, которые зависят от физического имени файла? Действительно любопытно, какова мотивация этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...