xp_instance_RegRead和xp_RegRead之间的差异

Gab*_*ães 20 sql-server

什么是XP_REGREAD和XP_INSTANCE_REGREAD之间的区别.如何使用它们,是否有关于这些的文档?

Joe*_*lli 28

xp_regread读取您指定的文字注册表路径.xp_instance_regread"转换"您指定的路径,以便它与您当前使用的SQL Server实例匹配.

例如,我在我的机器上安装了SQL Server的Developer和Express版本.我连接到Express实例并运行以下两个命令:

declare @dir nvarchar(4000) 

exec master.dbo.xp_regread 
    N'HKEY_LOCAL_MACHINE',
    N'Software\Microsoft\MSSQLServer\Setup',
    N'SQLPath',
    @dir output
select @dir

exec master.dbo.xp_instance_regread
    N'HKEY_LOCAL_MACHINE',
    N'Software\Microsoft\MSSQLServer\Setup',
    N'SQLPath', 
    @dir output
select @dir
Run Code Online (Sandbox Code Playgroud)

第一个返回的C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL是在我指定的位置找到的值,但它不是我的Express实例的正确安装路径.

第二个返回c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL,这是我的Express实例的正确路径.实际读取的值HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\MSSQL.1\Setup与我提供给xp_instance_regread的路径完全不同.