Что такое использование SYNONYM в SQL Server 2008?
Что такое использование SYNONYM в SQL Server 2008?
Ответ 1
В некоторых корпоративных системах вам, возможно, придется иметь дело с удаленными объектами, над которыми у вас нет контроля. Например, база данных, которая поддерживается другим отделом или командой.
Синонимы могут помочь вам отделить имя и местоположение базового объекта от вашего кода SQL. Таким образом, вы можете кодировать таблицу синонимов, даже если требуемая таблица перемещается на новый сервер/базу данных или переименовывается.
Например, я мог бы написать такой запрос:
insert into MyTable
(...)
select ...
from remoteServer.remoteDatabase.dbo.Employee
но тогда, если изменится сервер или база данных, схема или таблица, это повлияет на мой код. Вместо этого я могу создать синоним для удаленного сервера и вместо этого использовать синоним:
insert into MyTable
(...)
select ...
from EmployeeSynonym
Если базовый объект меняет местоположение или имя, мне нужно только обновить синоним, чтобы указать на новый объект.
Ответ 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
Теперь при написании хранимой процедуры вместо того, чтобы писать весь псевдоним каждый раз, когда вы обращаетесь к нему в таблице вы можете просто использовать псевдоним Клиенты. Кроме того, если вы когда-либо изменить местоположение или имя создание базы данных нужно сделать, это изменить один синоним вместо того, чтобы изменять все хранимые процедуры, которые ссылаются на старого сервера.
Ответ 4
Кажется (от здесь), чтобы создать псевдоним для другой таблицы, чтобы вы могли легко ссылаться на него. Как
select * from table longname as ln
но постоянный и повселокальный.
Изменить: работает для пользовательских функций, локальных и удаленных объектов, а не только для таблиц.
Ответ 5
Я был давним разработчиком Oracle и делал переход на SQL Server.
Но еще одно большое использование синонимов - это цикл разработки. Если у вас несколько разработчиков, изменяющих одну и ту же схему, вы можете использовать синоним, чтобы указывать на свою собственную схему, а не на непосредственную модификацию таблицы "производство". Это позволяет вам делать свою работу, и другие разработчики не будут затронуты во время внесения изменений и отладки.
Я рад видеть их в SQL Server 2008...
Ответ 6
Синоним - это объект базы данных, который выполняет следующие функции:
- Предоставляет альтернативное имя для другого объекта базы данных, называемого базовым объектом, который может существовать на локальном или удаленном сервере.
- Предоставляет слой абстракции, который защищает клиентское приложение от изменений, внесенных в имя или местоположение базового объекта.
Никогда не требовали первого, но вторая проблема весьма полезна.
Ответ 7
Фактически вы можете создать синоним в пустой базе данных и передать его объекту в другой базе данных и, таким образом, заставить его работать так, как если бы он находился в полностью пустой базе данных (помимо синонима, который вы создали, конечно).