Назад | Перейти на главную страницу

Избегайте таблиц SQL Server 2005 с одинаковыми именами, но с разными владельцами

Какова наиболее вероятная причина такого поведения в SQL Server 2005?

ТЕСТ №1:

Я запускаю Management Studio Express, подключаюсь к своей локальной базе данных с помощью «проверки подлинности Windows» и вижу, что у меня есть 1 база данных и 1 таблица с именем dbo.MyTable.

Запуск "SELECT * FROM MyTable" (и dbo.MyTable) показывает, что он ДЕЙСТВИТЕЛЬНО существует, но пуст.


ТЕСТ №2:

Я повторно запускаю Management Studio Express, подключаюсь к своей базе данных 1 с помощью «аутентификации sql» myLogin / myPassword и вижу, что у меня есть dbo.MyTable.

Запуск «SELECT * FROM MyTable» (и dbo.MyTable) дает:

Msg 229, Level 14, State 5, Line 2 
The SELECT permission was denied on the object 'MyTable', database 'master', schema 'dbo'.

ТЕСТ №3:

Выполнение некоторого общего кода vb.net с использованием моей SQL-аутентификации myLogin / myPassword показывает, что я могу читать / писать в MyTable без проблем .... и таблица содержит сотни хороших записей.

Неужели у меня здесь 2-3 разных стола? (Мне нужно только 1.) Я действительно НИКОГДА необходимо иметь «несколько таблиц с одинаковыми именами, но у меня разные владельцы».

Что тут происходит?

В сообщенной вами ошибке указано, что ваше соединение Management Studio Express с использованием аутентификации SQL пытается запросить MyTable в master база данных. Я очень сомневаюсь, что это та база данных, которую вы хотите использовать.

В Management Studio убедитесь, что вы выбираете свою базу данных. Вы можете использовать раскрывающееся меню на панели инструментов или, если ваша база данных называется MyDatabase, вы можете выполнить команду USE, а затем ваш SELECT.

USE MyDatabase
SELECT * FROM MyTable

В строке подключения вашего приложения VB.NET, вероятно, уже есть эта настройка. Это будет database атрибут или initial catalog атрибут, а значение будет MyDatabase.