Я новичок в SQL Server. Я подключился к SQL-серверу через SQuirrel Client.

URL подключения:

jdbc:sqlserver://192.xx.xx.xx:1433;databaseName=ep

С именем пользователя & amp; пароль .

Затем я попробовал запросить table1 в schema1 -

SELECT * from table1 

Он вернул записи. Я не упомянул имя схемы в запросе.

Возможно, таблицы в разных сахемах ( одной базе данных ) с одинаковым именем .

Я прав? Если да, то как он разрешит имя схемы?

0
Devender 22 Фев 2016 в 14:31

2 ответа

Лучший ответ

Схема работает как пространство имен в SQL SERVER, вы можете создавать таблицы, представления, sps в схеме и устанавливать разрешения GRANT, DENY или REVOKE для этих объектов. Из Реализация схем объектов базы данных

В SQL Server 2005 реализована концепция схемы объекта базы данных. Схема - это отдельное пространство имен для облегчения разделения, управления и владения объектами базы данных. Он удалил тесную связь между объектами базы данных и владельцами, чтобы улучшить управление безопасностью объектов базы данных. Схемы объектов базы данных предлагают функциональные возможности для управления и защиты объектов приложений в среде базы данных, недоступные в предыдущих версиях SQL Server.

Просто хотел добавить сюда, если вы не указали какую-либо схему, выберите dbo в качестве схемы.

0
Dev 22 Фев 2016 в 12:06

Его отличает его владелец. Каждый объект (таблица, представление, процедура) имеет владельца, который должен быть пользователем в базе данных. Например, у вас могут быть user1.table1 и user2.table2 в одной базе данных.

Итак, вы можете ввести

select * from user1.table1

А также

select * from user2.table1

Вы можете увидеть такие имена, как dbo.table_name, это означает, что владельцем является dbo, владелец базы данных. Если вы не укажете владельца, система проверит dbo и вашего пользователя (пользователя, запустившего команду).

0
Kimon 22 Фев 2016 в 11:46