Подтвердить что ты не робот

Что такое использование SYNONYM в SQL Server 2008?

Что такое использование SYNONYM в SQL Server 2008?

4b9b3361

Ответ 1

В некоторых корпоративных системах вам, возможно, придется иметь дело с удаленными объектами, над которыми у вас нет контроля. Например, база данных, которая поддерживается другим отделом или командой.

Синонимы могут помочь вам отделить имя и местоположение базового объекта от вашего кода SQL. Таким образом, вы можете кодировать таблицу синонимов, даже если требуемая таблица перемещается на новый сервер/базу данных или переименовывается.

Например, я мог бы написать такой запрос:

insert into MyTable
(...)
select ... 
from remoteServer.remoteDatabase.dbo.Employee

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

insert into MyTable
(...)
select ... 
from EmployeeSynonym

Если базовый объект меняет местоположение или имя, мне нужно только обновить синоним, чтобы указать на новый объект.

http://www.mssqltips.com/sqlservertip/1820/use-synonyms-to-abstract-the-location-of-sql-server-database-objects/

Ответ 2

Синонимы обеспечивают отличный уровень абстракции, позволяя нам использовать дружественные и/или локальные имена для многословных имен или удаленных таблиц, представлений, процедур и функций.

Пример

У вас есть server1 и dbschema как ABC и имя таблицы как Employee, и теперь вам нужно получить доступ к таблице Employee в Server2 для выполнения операции запроса.

Итак, вы должны использовать, как Server1.ABC.Employee, он раскрывает все ServerName, SchemaName и TableName.

Вместо этого вы можете создать ссылку синонима Create Synonym EmpTable for Server1.ABC.Employee

Итак, вы можете получить доступ, например, Select * from Peoples p1 inner join EmpTable emp where emp.Id=p1.ID

Таким образом, это дает преимущества абстракции, легкости изменения, масштабируемости.

Позже, если вы хотите изменить имя сервера или схему или имя табуляции, просто вам нужно только изменить синоним, и вам не нужно искать все и заменять их.

Если вы использовали его, вы почувствуете реальное преимущество синонима. Он также может сочетаться со связанным сервером и предоставлять больше преимуществ разработчикам.

Ответ 3

Пример полезности этого может быть, если у вас есть хранимая процедура в базе данных пользователей, которая необходима для доступ к таблице "Клиенты" на другой производственный сервер. Предполагая, что вы создала хранимую процедуру в Пользователи базы данных, вы можете установить синоним, например: ИСПОЛЬЗОВАТЬ пользователей; GO CREATE SYNONYM Клиенты FOR Offsite01.Production.dbo.Clients; GO

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

От: http://blog.sqlauthority.com/2008/01/07/sql-server-2005-introduction-and-explanation-to-synonym-helpful-t-sql-feature-for-developer/

Ответ 4

Кажется (от здесь), чтобы создать псевдоним для другой таблицы, чтобы вы могли легко ссылаться на него. Как

select * from table longname as ln

но постоянный и повселокальный.

Изменить: работает для пользовательских функций, локальных и удаленных объектов, а не только для таблиц.

Ответ 5

Я был давним разработчиком Oracle и делал переход на SQL Server.

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

Я рад видеть их в SQL Server 2008...

Ответ 6

Синоним - это объект базы данных, который выполняет следующие функции:

  • Предоставляет альтернативное имя для другого объекта базы данных, называемого базовым объектом, который может существовать на локальном или удаленном сервере.
  • Предоставляет слой абстракции, который защищает клиентское приложение от изменений, внесенных в имя или местоположение базового объекта.

Никогда не требовали первого, но вторая проблема весьма полезна.

msdn - ваш друг

Ответ 7

Фактически вы можете создать синоним в пустой базе данных и передать его объекту в другой базе данных и, таким образом, заставить его работать так, как если бы он находился в полностью пустой базе данных (помимо синонима, который вы создали, конечно).