在远程计算机mdf文件路径问题上创建SQL Server数据库

时间:2009-10-28 21:58:00

标签: sql-server

我正在尝试在远程计算机上运行的数据库实例上创建MS Sql Server数据库。当我这样做时,我需要能够指定数据库(.mdf)文件的路径。如果我尝试在不存在的文件夹中创建数据库,SQL Server将会失败(如果它自动创建文件夹结构,那就不好了)。

在我尝试创建数据库之前,有没有办法在SQL中在目标计算机上创建文件夹路径,或者至少确定新数据库的默认文件夹是什么,我可以安全地创建新数据库文件?

1 个答案:

答案 0 :(得分:2)

如果您具有适当的权限,并且启用了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?如果是这样,为什么?您是否编写了依赖于文件物理名称的脚本?真的很好奇这背后的动机。