sp_msforeachdb не перечисляет все базы данных по экземпляру SQL Server

Wordpress переписывает URL. Измените адрес веб-сайта на www.adlerr.com в меню свойства.

0
задан 22 July 2010 в 15:15
3 ответа

Решенный это! 0x4000000 обдумал состояние базы данных, установка AutoClose DB.
AutoClose плохо, не только потому, что это путает ms_foreachdb, но также и потому что это часто будет делать Вашу производительность плохо. Хорошие новости: это находится на, 'уничтожают список'.

sp_helpdb может разделить состояния в удобочитаемую форму и показывает, что sp_msforeachdb исходный код интерпретирует AutoClose отметьте неправильно как InvalidLogin :-)

Это что sp_helpdb показал (прокрутите к праву видеть различия между Balance166 и Balance205):

Balance166 Status=ONLINE, Updateability=READ_WRITE, UserAccess=MULTI_USER, Recovery=FULL, Version=655, Collation=SQL_Latin1_General_CP1_CI_AS, SQLSortOrder=52, IsAutoCreateStatistics, IsAutoUpdateStatistics
Balance205 Status=ONLINE, Updateability=READ_WRITE, UserAccess=MULTI_USER, Recovery=FULL, Version=655, Collation=SQL_Latin1_General_CP1_CI_AS, SQLSortOrder=52, IsAutoClose, IsAutoCreateStatistics, IsAutoUpdateStatistics

Выключение AutoClose легко:

USE [master]
GO
ALTER DATABASE [Balance205] SET AUTO_CLOSE OFF WITH NO_WAIT
GO

и результаты в этих настройках:

name       status  Xstatus    DBStatus   issingleuser has_dbaccess
---------- ------- ---------- ---------- ------------ ------------
Balance166   65536 0x00010000 ONLINE                0            1
Balance205   65536 0x00010000 ONLINE                0            1

- jeroen

1
ответ дан 4 December 2019 в 13:05

Studio управления SQL Server делает запрос против sys.databases представления каталога. Все базы данных перечислены в этом DMV. Хранимая процедура sp_msforeachdb имеет логику, которая вызывает функцию has_dbaccess () для парсинга ее списка баз данных. Это, очевидно, не хочет пытаться выполнить команду против базы данных, к которой у Вас нет доступа. У Вас есть доступ ко всем рассматриваемым базам данных с учетной записью используемым для выполнения запроса?

1
ответ дан 4 December 2019 в 13:05

ms_foreachdb не работает также в SQL Server 2005 или позже - но если Вы копируете логику из этой хранимой процедуры и изменяете тип курсора на НЕЧУВСТВИТЕЛЬНЫЙ, эта недокументированная хранимая процедура действительно работает правильно. Однако Вы были бы лучше всего размещены для использования собственного кода для того, чтобы соответствовать требованиям завтрашнего дня.

1
ответ дан 4 December 2019 в 13:05

Теги

Похожие вопросы