declare @foldername nvarchar(255)
declare @r int
declare @s nvarchar(255)
set @s = 'dir ' + @foldername
exec @r=xp_cmdshell @s,no_output
if @r = 0
print @foldername+ '存在'
else
print @foldername+ '不存在'
再把上述代码修改一下,即可实现你的要求。
问题:用sql语句获取mdf默认存放路径这个路径没有放在sql server里面,而是在注册表里,路径是:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQLServer,其中MSSQL10_50.MSSQLSERVER是sql server 2008的默认instance name,参考http://msdn.microsoft.com/en-us/library/ms143547.aspx。
sql server里面可以用xp_instance_regread读取注册表内容,问题就出在这个上面了,直接看解法,
?
1
2
3
4
5
6
declare @SmoDefaultFile nvarchar(1000)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\Microsoft SQL Server\MSSQLServer', N'DefaultData', @SmoDefaultFile OUTPUT
select @SmoDefaultFile
set @SmoDefaultFile=null
exec master.dbo.xp_regread N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQLServer', N'DefaultData', @SmoDefaultFile OUTPUT
select @SmoDefaultFile
两种方案的答案是相同的(第二种可能在不同的配置下会有问题)。
弄巧成拙,把第二个用法的参数用到了第一个上,搞好就才弄明白怎么回事。最后还是伟大的stack overlfow告诉我,xp_instance_regread会自动把路径转换成当成使用的instance对应的路径,而xp_regread就是个呆瓜,实打实的货。
最简单的方法是打开SQL管理器,到属性里可以看到路径
1、首先电脑打开SQL客户端,找到实例,右键实例出现菜单栏,点击属性进入即可。
2、然后进入属性的界面,可以看到有很多设置的选项,找到数据库设置,点击一下进入。
3、点击数据库设置之后,进入该界面,可以看到数据库默认位置的选项,即可看到sql数据库的路径。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)