как запросить таблицу в структуре Catalog — schema — table?

#sql #sql-server

#sql #sql-сервер

Вопрос:

У меня есть каталог с именем TEKLABEL, схема с именем PUB, таблица с именем MstrShip

когда я пытаюсь запросить таблицу, которую я использовал

 from PUB.MstrShip
  

и система выдает мне ошибку: недопустимое имя объекта «PUB.MstrShip»

Как я могу запросить эту таблицу тогда?

Справочная информация: я работаю над очень старым Windows server 2003 SP2, и SQL server тоже старый (SQL Query Analyzer версии 8.00.2039). Когда я использую ODBC Query Tool версии v1.38 для запроса таблиц, я использовал «PUB.MstrShip», он может выполняться и давать мне результаты. Но когда я хочу запустить тестовую программу с указанным в программе «PUB.MstrShip», она сообщит об ошибке «Недопустимое имя объекта ‘PUB.MstrShip'»

введите описание изображения здесь Это строка подключения анализатора запросов SQL

введите описание изображения здесь Это строка подключения к программе в файле конфигурации

введите описание изображения здесь Это структура

Комментарии:

1. Вы пробовали соглашение об именовании из 3 частей, например SELECT * FROM TEKLABLE.PUB.MstrShip ?

2. Нет, потому что это требует много ручных изменений в программе, вот почему я этого не делал, и, надеюсь, я смогу быть уверен, прежде чем менять…

3. Какую строку подключения использует ваша программа для подключения к базе данных?

4. ДжеймИ прав. Если вы не укажете каталог при входе в систему, он примет каталог по умолчанию, вероятно, Master .

5. Я только что добавил строку подключения

Ответ №1:

Попробуйте изменить строку подключения для подключения к базе данных teklable, это должно быть только одно ручное изменение в вашей программе. например

 "Provider=SQLOLEDB;Data Source=Your_Server_Name;Initial Catalog=TEKLABLE;UserId=Your_Username;Password=Your_Password;" 
  

Глядя на ваши свойства подключения, я бы посоветовал попробовать предложение tgolisch и изменить базу данных по умолчанию, чтобы логин sqluser был теклируемым

Какую версию SQL Server вы используете? Если вы подключаетесь к серверу с помощью SSMS и переходите к Security> Logins , вы можете отредактировать свойства для входа в систему SQLuser и изменить базу данных по умолчанию.

Возможно, стоит проверить, что никакие другие приложения не используют этот логин, поскольку ваше изменение может их нарушить. Лучшим вариантом может быть создание нового логина с именем TEKLABELuser и установка базы данных по умолчанию на teklable

Комментарии:

1. итак, как мне изменить файл конфигурации моей программы? или как я должен изменить код? «из TEKLABEL.PUB.MstrShip»?

2. обновленный ответ, можете ли вы подключиться к SQL server с помощью SSMS?

3. В ODBC вы также можете определить / переопределить свой каталог по умолчанию. Если нужно коснуться только одной или нескольких машин, это было бы разумно. Однако, если их сотни, вам следует рассмотреть возможность установки значения по умолчанию на уровне SQL Server (security).

Ответ №2:

В SQL Server вы можете указать каталог по умолчанию для вашего входа (ов) в качестве TEKLABEL. Тогда ваши запросы должны работать как есть. В противном случае вы могли бы указать это в своих строках подключения, как показал JamieA.