by Alexey Knyazev
18. октября 2009 21:47
Появилась необходимость делать "снимок" всех логинов на сервере БД со всеми правами внутри сервера и правами на все базы, с возможностью быстро скриптом вернуть это состояние без накатывания БэкАпов.
Для этого случая я навоял небольшой скрипт, думаю он будет многим полезен, так как ещё одно его применение-это перенос УЗ между серверами БД.
За основу взял скрипт от microsoft (http://support.microsoft.com/kb/918992/ru), добавил помимо переноса логинов ещё и перенос серверных ролей+создание юзеров со всеми правами на базы.
[Ещё]
by Alexey Knyazev
24. сентября 2009 21:11

Совсем недавно я описывал способ, как удалить отлюченные учётки с сервера БД с помощью PowerShell.
Теперь покажу способ, как получить доступ к АД средствами самого SQL Server`a через ADSI (Active Directory Service Interfaces), протокол LDAP (Lightweight Directory Access Protocol).
[Ещё]
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)
[Ещё]
by Admin
18. августа 2009 21:05

Компрессия данных появилась ещё в SQL Server 2008, но в версии SQL Server 2008 R2 её значительно улучшили над Unicode-символами.
Для примера запустим один и тот же скрипт на 2х инстансах 2008 и 2008R2 (эксперементы ставим над системной таблицей dbo.spt_values базы данных master):
[Ещё]
by Alexey Knyazev
20. июля 2009 20:57
«Как получить текущую дату, без учёта времени?»
Вариантов много, но хотелось бы их собрать все вместе:
1) Самый известный и документированный способ – это конвертация даты в строку в нужном формате и обратно в дату:
1 | SELECT CONVERT (DATETIME, CONVERT ( VARCHAR , GETDATE(), 112))
|
2) Второй способ – это использование функций даты и времени (dateadd, datediff):
1 | SELECT DATEADD(d, DATEDIFF(d, 0, GETDATE()), 0)
|
3) Третий способ – это конвертация даты в тип float и использование математической функции floor, которая возвращает наибольшее целое число, меньшее или равное указанному числовому выражению или математическую функцию round:
1 | SELECT CONVERT (DATETIME, FLOOR( CONVERT ( FLOAT , GETDATE())))<br><br> SELECT CONVERT (DATETIME, ROUND( CONVERT ( FLOAT , GETDATE()), 0, 1))
|
4) Четвёртый способ отталкивается от особенностей типа datetime.
Выдержка из русскоязычного BOL:
Значения типа datetime хранятся в виде 4-байтовых целых чисел. Первые четыре байта содержат количество дней до или после даты отсчета: 1 января 1900 года. Дата отсчета является системной датой. Вторые четыре байта содержат текущее значение времени, представленного в виде трехсотых долей секунды, прошедших после полуночи.
1 | SELECT CAST ( CAST ( CAST ( CAST (GETDATE() as BINARY (8)) as BINARY (4)) as BINARY (8)) as DATETIME)
|
5) Пятый способ – это синтаксис OLE DB/ODBC, который SQL Server отлично понимает:
1 | SELECT CONVERT (DATETIME, {fn CURDATE()})<br><br> SELECT CONVERT (DATETIME, {fn CURRENT_DATE ()})
|
6) Тип данных date, новый тип данных, который появится в MS SQL Server 2008, сохраняет дату без компонента времени. Диапазон – от 1 января 0001 года до 31 декабря 9999 года (от 0001-01-01 до 9999-12-31). Каждая переменная даты требует трех байтов для хранения и имеет точность в 10 цифр. Точность типа данных ограничена отдельным днем.
[Ещё]
by Alexey Knyazev
25. июня 2009 20:41

Из строк с набором слов вырезаем все слова и сохраняем их в отдельном поле таблицы, длина строк не имеет значения
[Ещё]
by Admin
24. июня 2009 20:03
На днях пришлось навести порядок на нескольких старых серверах БД. Суть проблемы: в АД более 9500 учётных записей, активных не более 30% (остальные disabled).
Исторически сложилось так, что на серверах БД остались "висеть" и ряд учётных записей людей, которые покинули стены родного предприятия. В условия кризиса и не минуемой текучки персонала, скрипт написанный на PowerShell облегчит многим жизнь, в том числе и мне.
[Ещё]
by Admin
5. июня 2009 19:26
В очередной раз на форуме встретил вопрос: "Создание системной функции в MS SQL Server 2008".
Как известно, в SQL Server 2000 эта задача решалась достаточно легко и без малой крови (How to Write Your Own System Functions).
Но как всё-таки решить подобную задачу на SQL Server 2005/2008? Если верить официальным источникам, то никак. Но...есть способ
Внимание!!!
не рекомендую им пользоваться!!!
[Ещё]
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"
[Ещё]
by Admin
27. мая 2009 19:10
Аудит доступа к объектам на файловых серверах - это одна из головных болей администратора. Как часто к вам вбегает взлохмаченный пользователь и в панике спрашивает, кто удалил важный файл с сетевого ресурса?
Думаю, бывает...
Я предлагаю свой способ логирования этих событий, в виде службы Windows и хранением истории в БД MS SQL Server.
[Ещё]