Снимок УЗ в SQL Server

by Alexey Knyazev 18. октября 2009 21:47

Появилась необходимость делать "снимок" всех логинов на сервере БД со всеми правами внутри сервера и правами на все базы, с возможностью быстро скриптом вернуть это состояние без накатывания БэкАпов.


Для этого случая я навоял небольшой скрипт, думаю он будет многим полезен, так как ещё одно его применение-это перенос УЗ между серверами БД.


За основу взял скрипт от microsoft (http://support.microsoft.com/kb/918992/ru), добавил помимо переноса логинов ещё и перенос серверных ролей+создание юзеров со всеми правами на базы.

[Ещё]

Tags: , , , ,

SQL Server

Чистим сервер БД от учёток отключенных в AD (ADSI)

by Alexey Knyazev 24. сентября 2009 21:11


Совсем недавно я описывал способ, как удалить отлюченные учётки с сервера БД с помощью PowerShell.


Теперь покажу способ, как получить доступ к АД средствами самого SQL Server`a через ADSI (Active Directory Service Interfaces), протокол LDAP (Lightweight Directory Access Protocol).

[Ещё]

Tags: ,

SQL Server

DTS-пакеты и SSMS

by Alexey Knyazev 27. августа 2009 01:52



При попытке открыть DTS-пакет в SQL Server Management Studio, может появиться ошибка:

SQL Server 2000 DTS Designer components are required to edit DTS packages. Install the special Web download, "SQL Server 2000 DTS Designer Components" to use this feature. (Microsoft.SqlServer.DtsObjectExplorerUI)

Для работы с DTS нужно установить компонет "SQL Server 2000 DTS Designer Components" (http://download.microsoft.com/download/f/7/4/f74cbdb1-87e2-4794-9186-e3ad6bd54b41/SQLServer2005_DTS.msi)

[Ещё]

Tags:

SQL Server

SQL Server 2008 R2: Unicode Compression

by Admin 18. августа 2009 21:05


Компрессия данных появилась ещё в SQL Server 2008, но в версии SQL Server 2008 R2 её значительно улучшили над Unicode-символами.


Для примера запустим один и тот же скрипт на 2х инстансах 2008 и 2008R2 (эксперементы ставим над системной таблицей dbo.spt_values базы данных master):

[Ещё]

Tags: , ,

SQL Server

Обнулить время

by Alexey Knyazev 20. июля 2009 20:57

«Как получить текущую дату, без учёта времени?»


Вариантов много, но хотелось бы их собрать все вместе:


1) Самый известный и документированный способ – это конвертация даты в строку в нужном формате и обратно в дату:


SELECT CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE(), 112))

2) Второй способ – это использование функций даты и времени (dateadd, datediff):


SELECT DATEADD(d, DATEDIFF(d, 0, GETDATE()), 0)

3) Третий способ – это конвертация даты в тип float и использование математической функции floor, которая возвращает наибольшее целое число, меньшее или равное указанному числовому выражению или математическую функцию round:


SELECT CONVERT(DATETIME, FLOOR(CONVERT(FLOAT, GETDATE())))

SELECT CONVERT(DATETIME, ROUND(CONVERT(FLOAT, GETDATE()), 0, 1))

4) Четвёртый способ отталкивается от особенностей типа datetime.


Выдержка из русскоязычного BOL:


Значения типа datetime хранятся в виде 4-байтовых целых чисел. Первые четыре байта содержат количество дней до или после даты отсчета: 1 января 1900 года. Дата отсчета является системной датой. Вторые четыре байта содержат текущее значение времени, представленного в виде трехсотых долей секунды, прошедших после полуночи.


SELECT CAST(CAST(CAST(CAST(GETDATE() as BINARY(8)) as BINARY(4)) as BINARY(8)) as DATETIME)

5) Пятый способ – это синтаксис OLE DB/ODBC, который SQL Server отлично понимает:


SELECT CONVERT(DATETIME, {fn CURDATE()})

SELECT CONVERT(DATETIME, {fn CURRENT_DATE()})

6) Тип данных date, новый тип данных, который появится в MS SQL Server 2008, сохраняет дату без компонента времени. Диапазон – от 1 января 0001 года до 31 декабря 9999 года (от 0001-01-01 до 9999-12-31). Каждая переменная даты требует трех байтов для хранения и имеет точность в 10 цифр. Точность типа данных ограничена отдельным днем.

[Ещё]

Tags: ,

SQL Server

Разбиваем строки нa слoва

by Alexey Knyazev 25. июня 2009 20:41
Из строк с набором слов вырезаем все слова и сохраняем их в отдельном поле таблицы, длина строк не имеет значения [Ещё]

Tags: ,

SQL Server

Чистим сервер БД от учёток отключенных в AD (PoSh)

by Admin 24. июня 2009 20:03

На днях пришлось навести порядок на нескольких старых серверах БД. Суть проблемы: в АД более 9500 учётных записей, активных не более 30% (остальные disabled).


Исторически сложилось так, что на серверах БД остались "висеть" и ряд учётных записей людей, которые покинули стены родного предприятия. В условия кризиса и не минуемой текучки персонала, скрипт написанный на PowerShell облегчит многим жизнь, в том числе и мне.

[Ещё]

Tags: , ,

PowerShell | SQL Server

Создание системной функции в MS SQL Server 2008

by Admin 5. июня 2009 19:26

В очередной раз на форуме встретил вопрос: "Создание системной функции в MS SQL Server 2008".


Как известно, в SQL Server 2000 эта задача решалась достаточно легко и без малой крови (How to Write Your Own System Functions).


Но как всё-таки решить подобную задачу на SQL Server 2005/2008? Если верить официальным источникам, то никак. Но...есть способ


Внимание!!!


не рекомендую им пользоваться!!!


 

[Ещё]

Tags: ,

SQL Server

AuditObjectAccessViewer

by Admin 2. июня 2009 19:22


Как и обещал в предыдущем посте, выкладываю утилиту AuditObjectAccessViewer, для просмотра логов.


Строка коннекции к БД, хранится в реестре, если работа с утилитой будет вестись с той же машины, где установлена служба AuditObjectAccess, то никаких дополнительных записей в реестр добавлять не нужно, в противном случае:


Windows Registry Editor Version 5.00


[HKEY_LOCAL_MACHINE\SOFTWARE\AuditObjectAccess] "ConnectionString"="Data Source=(local);Initial Catalog=AuditObjectAccess;Integrated Security=SSPI"

[Ещё]

Tags: ,

SQL Server

AuditObjectAccess (служба Виндоус)

by Admin 27. мая 2009 19:10

Аудит доступа к объектам на файловых серверах - это одна из головных болей администратора. Как часто к вам вбегает взлохмаченный пользователь и в панике спрашивает, кто удалил важный файл с сетевого ресурса?


Думаю, бывает...


Я предлагаю свой способ логирования этих событий, в виде службы Windows и хранением истории в БД MS SQL Server.

[Ещё]

Tags: ,

SQL Server