Различия между xp_instance_RegRead и xp_RegRead - PullRequest
17 голосов
/ 14 декабря 2010

В чем разница между XP_REGREAD и XP_INSTANCE_REGREAD.Как их использовать, есть ли на них документы?

Ответы [ 2 ]

25 голосов
/ 14 декабря 2010

xp_regread читает буквенный путь реестра, который вы укажете. xp_instance_regread «преобразует» указанный вами путь, чтобы он соответствовал экземпляру SQL Server, который вы используете в данный момент.

Например, на моем компьютере установлены выпуски SQL Server для разработчиков и 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_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\MSSQL.1\Setup, что сильно отличается от пути, который я указал в xp_instance_regread.

3 голосов
/ 14 декабря 2010

Габриэль, Сервисный аккаунт не обязательно должен быть dbo. Пока пользователь является пользователем в базе данных master, вы можете предоставлять разрешения на выполнение для системных объектов в master db.

<code>GRANT EXEC ON OBJECT::master.dbo.xp_instance_regread TO ServiceAccountUserName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...