SQL Server. Истории о данных: случай с фантомным дубликатом
Содержание:
1.Часть I (Вы читаете данный раздел);
2. Часть II;
3. Часть III.
Прежде чем приступить непосредственно к теме нашего сегодняшнего разговора, немного истории: в SQL Server 2005 разработчики внедрили такое средство командной строки, как SQLCMD, которое пришло на замену OSQL. Базой для SQLCMD послужил всем известный интерфейс OLE-DB, а не ODBC, который предоставлял менее широкие возможности. Для примера скажу, что OLE-DB позволяет задействовать команды ОС прямо внутри сценария. Выполнять запросы SQLCMD операторы смогли благодаря выходу среды под названием SQL Server Management Studio. Что в итоге им это дало? Встраивать команды совершенно других типов в имеющиеся сценарии SQL. Для примера приведу сценарий, который можно задействовать в стандартном окне запросов:

Запуск режима SQLCMD
При этом у оператора есть выбор: он может работать как с режимом запросов, так и посредством режа SQLCMD (см. скриншот выше).

Команда !!DIR подсвечивается

Сценарий выполняется
Теперь команда !!DIR подсвечивается, и сценарий выполняется (см. скриншоты выше).
В режиме SQLCMD пользователю доступно достаточное количество полезных команд:
За годы работы с продуктом я выбрал для себя самую полезную команду. Она указывает, на какой сервер будут пересылаться команды. Так, если в данный момент я подключен к серверу SERVER 1, я могу выполнить следующий сценарий:
Этот сценарий обеспечит подключение к серверу ProdServer и выполнение команд на указанном сервере. Именем сервера также может быть псевдоним SQL Server. Использование псевдонимов поможет уменьшить зависимость сценариев от имен серверов. Для выполнения процедуры аутентификации (если вы можете ограничиться аутентификацией Windows) от вас не потребуется никаких дополнительных сведений. В иных случаях для выполнения аутентификации SQL Server вы можете предоставить имя пользователя и пароль.
Теперь пора приступать к рассмотрению примера, приведенного в начале статьи. Итак, наш неустрашимый администратор (пусть это будет девушка по имени Мэри) работает с базой данных ReferenceData. Компания располагает четырьмя версиями этой базы данных, и они выполняются в различных средах: Development, Staging, UAC и Production.
1.
2. Часть II;
3. Часть III.
Прежде чем приступить непосредственно к теме нашего сегодняшнего разговора, немного истории: в SQL Server 2005 разработчики внедрили такое средство командной строки, как SQLCMD, которое пришло на замену OSQL. Базой для SQLCMD послужил всем известный интерфейс OLE-DB, а не ODBC, который предоставлял менее широкие возможности. Для примера скажу, что OLE-DB позволяет задействовать команды ОС прямо внутри сценария. Выполнять запросы SQLCMD операторы смогли благодаря выходу среды под названием SQL Server Management Studio. Что в итоге им это дало? Встраивать команды совершенно других типов в имеющиеся сценарии SQL. Для примера приведу сценарий, который можно задействовать в стандартном окне запросов:
SELECT TOP(2) * FROM sys.tables;
!!DIR
Запуск режима SQLCMD
При этом у оператора есть выбор: он может работать как с режимом запросов, так и посредством режа SQLCMD (см. скриншот выше).

Команда !!DIR подсвечивается

Сценарий выполняется
Теперь команда !!DIR подсвечивается, и сценарий выполняется (см. скриншоты выше).
В режиме SQLCMD пользователю доступно достаточное количество полезных команд:
[!!:]GO[count]
!! <command>
:exit(statement)
:Quit
:r <filename>
:setvar <var> <value>
:connect server[instance] [-l login_timeout] [-U user [-P password]]
:on error [ignore|exit]
:error <filename>|stderr|stdout
:out <filename>|stderr|stdoutЗа годы работы с продуктом я выбрал для себя самую полезную команду. Она указывает, на какой сервер будут пересылаться команды. Так, если в данный момент я подключен к серверу SERVER 1, я могу выполнить следующий сценарий:
:CONNECT ProdServer
SELECT @@SERVERNAME;Этот сценарий обеспечит подключение к серверу ProdServer и выполнение команд на указанном сервере. Именем сервера также может быть псевдоним SQL Server. Использование псевдонимов поможет уменьшить зависимость сценариев от имен серверов. Для выполнения процедуры аутентификации (если вы можете ограничиться аутентификацией Windows) от вас не потребуется никаких дополнительных сведений. В иных случаях для выполнения аутентификации SQL Server вы можете предоставить имя пользователя и пароль.
Теперь пора приступать к рассмотрению примера, приведенного в начале статьи. Итак, наш неустрашимый администратор (пусть это будет девушка по имени Мэри) работает с базой данных ReferenceData. Компания располагает четырьмя версиями этой базы данных, и они выполняются в различных средах: Development, Staging, UAC и Production.