Как проверить, существует ли база данных? - PullRequest
1 голос
/ 18 ноября 2011

Я хочу проверить, работает ли база данных как «Издатель» с другими базами данных.

Для этого я планировал проверить, существует ли в этом экземпляре «распространение» базы данных.

после прочтения этого я думал, что смогу просто сделать

new Sqlcommand("SELECT name FROM master.dbo.sysdatabases WHERE name = @name")

и решить мою проблему ... но у меня нет этой таблицы в моей базе данных ...: s

Есть ли другой способ решить мою проблему?

Ответы [ 3 ]

1 голос
/ 18 ноября 2011

Если у вас достаточно прав для просмотра метаданных базы данных, вы можете использовать

SELECT CASE
         WHEN DB_ID('distribution') IS NULL THEN 0
         ELSE 1
       END AS distributionExists  
1 голос
/ 19 ноября 2011

Если вы хотите знать, является ли база данных издателем, тогда поиск дистрибьютора - неправильная проверка. База данных может иметь удаленный распределитель, в этом случае вы получите ложный отрицательный результат. Или дистрибьютор может существовать, но база данных может не быть издателем, и в этом случае вы получаете ложный положительный результат. Не говоря уже о том, что дистрибутивная БД может иметь любое имя, поэтому поиск базы данных с именем distribution также неверен.

Правильный способ сделать это - подать в суд на встроенные вспомогательные процедуры репликации:

  • exec sp_helppublication вернет информацию обо всех публикациях в базе данных. Если база данных не является издателем, она ничего не вернет (подсказка к действию).
  • exec sp_helpdistributor вернет информацию о распространителе издателя
  • exec sp_helpdistributiondb вернет информацию о базе данных рассылки

Кроме того, простые факты о том, является ли БД издателем, подписчиком или распространителем, можно найти в sys.databases:

  • is_published База данных - это база данных публикации в топология репликации транзакций или моментальных снимков.
  • is_merge_published База данных - это база данных публикации в топологии репликации слиянием.
  • is_subscribeed База данных - это база данных подписки в топология репликации.
  • is_distributor База данных - это дистрибутив база данных для топологии репликации.
0 голосов
/ 18 ноября 2011
select *
from sys.databases
where name = @name

Очень близко. Похоже, что это представление каталога SQL Server 2000. То, что вы ищете, это запрос sys.databases.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...