Почему мы не можем получить доступ к таблице, созданной в master db, имя которой не начинается с sp_ от пользователя db? - PullRequest
0 голосов
/ 29 декабря 2011

Я где-то читал, что если мы создадим таблицу в master db с помощью sp_sometablename, она будет доступна из любой другой пользовательской базы данных.

Например,

use master
create table sp_TestTbl(Id int identity, Name varchar(20))
//Table created

Теперь, если я выполнюниже

use test
select * from sp_TestTbl

это сработало.

Принимая во внимание, что если я не добавлю префикс имени таблицы к sp_, хотя таблица будет создана в master db, но мы не можем получить доступэто из любой пользовательской базы данных

use master
create table abc_TestTbl(Id int identity, Name varchar(20))

use test
select * from abc_TestTbl

Ошибка:

Сообщение 208, Уровень 16, Состояние 1, Строка 6 Неверное имя объекта 'abc_TestTbl'.

в чем причина?

Спасибо

1 Ответ

1 голос
/ 29 декабря 2011

Попробуйте это:

use master
create table abc_TestTbl(Id int identity, Name varchar(20))

use test
select * from master.dbo.abc_TestTbl

Вам необходимо полностью указать имя таблицы при использовании из другой БД.

НО

Это совершенно плохая идея - для создания пользовательских объектов в главной базе данных.

Sql Server по-разному обрабатывает префикс sp_ - он сначала ищет объект в главной базе данных для этого префикса

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