Free Performance Profiler Tool for SQL Server 2005 Express
Free Microsoft Tools to Help Setup and Maintain PerfMon for SQL Server
Показаны сообщения с ярлыком sql server utility. Показать все сообщения
Показаны сообщения с ярлыком sql server utility. Показать все сообщения
понедельник, 18 октября 2010 г.
вторник, 13 января 2009 г.
понедельник, 28 апреля 2008 г.
Организация объектов в БД средствами Sql Server
Когда проект БД разрастается и начинает содержать большое количество объектов (таблиц, функций, хранимых процедур) упорядоченное управление этими объектам играет большую роль.
Не раз приходится видеть проекты, в которых база данных, со временим, превратилась в свалку объектов. Некоторые из них дублируют друг друга, не вообще не используются.С целью упорядочить объекты разработчики добавляют к названиям префиксы. Эти префиксы позволяют группировать элементы по заданному признаку, чаще всего этим признаком становится тип операции, для выполнения которой предназначена функция или хранимая процедура.
Все пользовательские объекты в БД можно условно разделить на неспециализированные и специализированные.
Специализированные объекты обеспечивают работу сущностей БД реализующих бизнес-логику системы, её обособленные компоненты, модули (например, функции и хранимые процедуры используемые в модуле планирования продаж).
Неспециализированные объекты используются во всей системе (например преобразование строки с разделителями в таблицу)
Рассмотрим, какие существуют способы организации исходных текстов в БД, отличающиеся от добавления префиксов.В MSSQL Management Studio есть возможность создавать проекты и хранить там подключения к БД и коды скриптов (File -> New -> Project или (Ctrl + Shift + N)).К сожалению там нельзя создавать иерархию папок для скриптов, но можно сделать Solution содержащий несколько проектов. Это позволяет, к примеру, создать свой проект для каждого модуля проекта. Кроме того, этот вариант предусматривает предусматривает взаимодействие с Source Safe и хранение исходников там, что удобно в случае коллективной разработки или сопровождения системы.
Другим способом структурирования объектов БД является использование схем (SCHEMA). Они изначально предназначены для формирования пространств имён (namespaces) в БД. Однако, схемы имеют более обширный спектр возможностей, связанный с управлением правами доступа к объектам схемы. Организация объектов при помощи схем применим скорее к достаточно большим системам и должен быть заложен в проект ещё на этапе проектирования.
Если мы уже имеем большое количество объектов сопровождаемого разными разработчиками, распределить его по схемам будет проблематично, поскольку придётся дописывать название схемы во всех местах, где упоминается объект.
воскресенье, 27 апреля 2008 г.
Предотвращение нежелательного запуска T-SQL
Для работы с базами данных все мы часто пользуемся продуктом SQL Server Managment Studio (или альтернативный инструмент).
Иногда приходится работать одновременно с несколькими базами данных или даже инстансами. Возникает ситуация когда у вас открыто большое количество скриптов, причём название базы данных к которой подключен тот или иной скрипт бывает трудно увидеть и можно, по ошибке запустить скрипт в контексте не той БД которой хотелось.
Например, для того чтобы предотвратить запуск кода на неправильном инстансе можно воспользоваться глобальной переменной @@SERVERNAME
IF @@SERVERNAME = 'ProdSQL'
BEGIN
PRINT
'*** код запустится только на нужном инстансе ***'
RETURN
END
Для того чтобы убедиться что скрипт запускается в правельной БД можно использовать в начале скрипта строчку USE DATABASE_NAME, но есть и другой способ - использовать функцию DB_NAME().
IF DB_NAME() = 'Master'
BEGIN
PRINT 'код запустится в нужной БД'
RETURN
END
Применение USE DATABASE_NAME можно считать более предпочтительным потому что позволяет не только предотвратить запуск в неправельной БД, но и совершить переход в нужную.
Можно пойти дальше и запретить запуск части кода T-SQL в нежелательные моменты времени. Напимер этот код не будет запускаться в выходные.
IF DATEPART(dw,GETDATE()) = 1 OR DATEPART(dw,GETDATE()) = 7
BEGIN
PRINT 'код запустится только в рабочие дни недели'
RETURN
END
Иногда приходится работать одновременно с несколькими базами данных или даже инстансами. Возникает ситуация когда у вас открыто большое количество скриптов, причём название базы данных к которой подключен тот или иной скрипт бывает трудно увидеть и можно, по ошибке запустить скрипт в контексте не той БД которой хотелось.
Например, для того чтобы предотвратить запуск кода на неправильном инстансе можно воспользоваться глобальной переменной @@SERVERNAME
IF @@SERVERNAME = 'ProdSQL'
BEGIN
'*** код запустится только на нужном инстансе ***'
RETURN
END
Для того чтобы убедиться что скрипт запускается в правельной БД можно использовать в начале скрипта строчку USE DATABASE_NAME, но есть и другой способ - использовать функцию DB_NAME().
IF DB_NAME() = 'Master'
BEGIN
PRINT 'код запустится в нужной БД'
RETURN
END
Применение USE DATABASE_NAME можно считать более предпочтительным потому что позволяет не только предотвратить запуск в неправельной БД, но и совершить переход в нужную.
Можно пойти дальше и запретить запуск части кода T-SQL в нежелательные моменты времени. Напимер этот код не будет запускаться в выходные.
IF DATEPART(dw,GETDATE()) = 1 OR DATEPART(dw,GETDATE()) = 7
BEGIN
PRINT 'код запустится только в рабочие дни недели'
RETURN
END
Описанные выше приёмы кажуться немного параноидальными, однако могут съэкономить время, предотвратив необходимость удаления ошибочно появившихся записей или восстановления из резервной копии в случае случайного удаления данных.
Ссылки:
воскресенье, 6 апреля 2008 г.
TableDiff - инструмент для сравнения и синхронизации данных
TableDiff утилита командной строки, поставляется с продуктами SQL Server 2005 и SQL Server 2008. Она позволяет сравнивать данные в двух таблицах, в том числе находящиеся на разных серверах. Одним из основных вариантов использования является проверка результатов репликации. Однако, потребность в ней может возникать как у разработчиков так и у администраторов и в других случаях, например, при полном или частичном восстановлении данных в таблицах, а также при откатах состояния БД на кокой либо момент времени в прошлом и последующем просмотром изменений.
Результаты сравнения таблиц могут сохраняться как в текстовый файл, так и в таблицу базы данных. Утилита имеет различные режимы работы и параметры запуска, которые описаны в документации.
Для удобства работы с TableDiff, существуют оболочки с GUI интерфейсом, например
A UI for MS SQL 2005 TableDiff.exe - бесплатная и доступна для скачивания.
Список других инструментов для сравнения и синхронизации данных можно найти на сайте SQL.RU
Comparison Suite for SQL Server
SQL Compare
AdeptSQL Diff
Embarcadero Change Manager
SQL Sync ToolKit
CDB Database Comparator
SQLExecMS
DatabaseDiff
XDBS
SQL Examiner
SQL Server Compare
SQL Scripter
Database Comparer
MS Visio
SQL Server DB Compare and Synchronize
Enisey - add-in to SQL Server Management Studio
TableDiff на других сайтах:
http://www.replicationanswers.com/TableDiff2005.asp
http://www.mssqltips.com/tip.asp?tip=1073
http://weblogs.sqlteam.com/mladenp/archive/2007/03/03/60125.aspx
Результаты сравнения таблиц могут сохраняться как в текстовый файл, так и в таблицу базы данных. Утилита имеет различные режимы работы и параметры запуска, которые описаны в документации.
Для удобства работы с TableDiff, существуют оболочки с GUI интерфейсом, например
A UI for MS SQL 2005 TableDiff.exe - бесплатная и доступна для скачивания.
Список других инструментов для сравнения и синхронизации данных можно найти на сайте SQL.RU
Comparison Suite for SQL Server
SQL Compare
AdeptSQL Diff
Embarcadero Change Manager
SQL Sync ToolKit
CDB Database Comparator
SQLExecMS
DatabaseDiff
XDBS
SQL Examiner
SQL Server Compare
SQL Scripter
Database Comparer
MS Visio
SQL Server DB Compare and Synchronize
Enisey - add-in to SQL Server Management Studio
TableDiff на других сайтах:
http://www.replicationanswers.com/TableDiff2005.asp
http://www.mssqltips.com/tip.asp?tip=1073
http://weblogs.sqlteam.com/mladenp/archive/2007/03/03/60125.aspx
Подписаться на:
Сообщения (Atom)