我正在尝试在远程计算机上运行的数据库实例上创建MS Sql Server数据库。当我这样做时,我需要能够指定数据库(.mdf)文件的路径。如果我尝试在不存在的文件夹中创建数据库,SQL Server将会失败(如果它自动创建文件夹结构,那就不好了)。
在我尝试创建数据库之前,有没有办法在SQL中在目标计算机上创建文件夹路径,或者至少确定新数据库的默认文件夹是什么,我可以安全地创建新数据库文件?
答案 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?如果是这样,为什么?您是否编写了依赖于文件物理名称的脚本?真的很好奇这背后的动机。