Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server xp_实例_重新研磨和xp_重新研磨之间的差异_Sql Server - Fatal编程技术网

Sql server xp_实例_重新研磨和xp_重新研磨之间的差异

Sql server xp_实例_重新研磨和xp_重新研磨之间的差异,sql-server,Sql Server,XP_重磨和XP_实例_重磨有什么区别。 如何使用它们,这些上有文档吗?xp\u regread读取您指定的文字注册表路径。xp_instance_重新读取“转换”您指定的路径,使其与您当前使用的SQL Server实例匹配 例如,我的机器上安装了SQL Server的Developer和Express版本。我连接到Express实例并运行以下两个命令: declare @dir nvarchar(4000) exec master.dbo.xp_regread N'HKEY_LO

XP_重磨和XP_实例_重磨有什么区别。
如何使用它们,这些上有文档吗?

xp\u regread读取您指定的文字注册表路径。xp_instance_重新读取“转换”您指定的路径,使其与您当前使用的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
第一个返回
C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL
,这是在我指定的位置找到的值,但它不是我的Express实例的正确安装路径


第二个返回
c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL
,这是我的Express实例的正确路径。该值实际上是从
HKEY\U LOCAL\U MACHINE\Software\Microsoft\Microsoft SQL Server\MSSQL.1\Setup
读取的,这与我提供给xp\U实例的路径非常不同。

Gabriel,服务帐户不必是dbo。只要用户是主数据库中的用户,就可以在主数据库中授予对系统对象的执行权限。
GRANT EXEC ON OBJECT::master.dbo.xp_instance_regread TO ServiceAccountUserName
GRANT EXEC ON OBJECT::master.dbo.xp\u instance\u重新读取为ServiceAccountUserName

我明白了,谢谢,我对此很生气,然后我向运行SQL的帐户添加了管理员权限以获得此权限。有没有办法在没有管理员权限的情况下读取注册表?@Gabriel:你应该能够授予对该过程的执行权限。但是我是否需要让我的SQL服务帐户在计算机上具有管理员权限?只要你不手动修改windows服务的启动设置以使用其他帐户,windows服务将对实例注册表项具有读/写权限。这些权限可能是在首次创建密钥时配置的(即在SQL server的初始配置/安装期间)。请注意,在许多情况下(包括通过SSMS进行的配置更改),在SQL server重新启动之前,SQL server会忽略这些键的值。我遇到了一个问题,即我试图使用nvarchar(max)读取注册表,但它不是这样工作的,仅使用数字大小的char变量。