MS SQL Server
В данной публикации буду размещать T-SQL код, редко используемый, но позволяющий секономить не мало времени.
Поиск поиск текста в хранимой процедуре (хранимым процедурам), данный код работает под MS SQL 2000:
Поиск поиск текста в хранимой процедуре (хранимым процедурам), данный код работает под MS SQL 2000:
select t2.name, t1.text from syscomments as t1 inner join sysobjects as t2 on t1.id = t2.id where t1.text like '%searchText%'
Добавлено: 13 января 2014 | Читать далее...
В SQL Server 2008 появилась новая плюшка позволяющая централизовано рулить удаленными серверами.




Добавлено: 01 марта 2013 | Читать далее...
Для того чтобы отправить почту с помощью компонента Database Mail в SQL Server. Нужно выполнить 3 основных шага.
Что бы создать профиль нужно запустить мастер "Configure Database Mail", который доступен из контекстного меню на объекте "Database Mail" (Management - Database Mail).
- Создание профиля учетной записи
- Настройка SQL Server
- Отправка тестового сообщения по электронной почте
Что бы создать профиль нужно запустить мастер "Configure Database Mail", который доступен из контекстного меню на объекте "Database Mail" (Management - Database Mail).

Изменено: 31 августа 2011 | Добавлено: 15 июля 2011 | Читать далее...
Данный функционал доступен в версии SQL Server 2005 и выше, независимо от редакции (Express, Standard и т.д.), построенный на системном представлении sys.dm_exec_query_stats:
set transaction isolation level read uncommitted select top 100 creation_time, last_execution_time, execution_count, total_worker_time/1000 as CPU, convert(money, (total_worker_time))/(execution_count*1000)as [AvgCPUTime], qs.total_elapsed_time/1000 as TotDuration, convert(money, (qs.total_elapsed_time))/(execution_count*1000)as [AvgDur], total_logical_reads as [Reads], total_logical_writes as [Writes], total_logical_reads+total_logical_writes as [AggIO], convert(money, (total_logical_reads+total_logical_writes)/(execution_count + 0.0))as [AvgIO], case when sql_handle IS NULL then ' ' else(substring(st.text,(qs.statement_start_offset+2)/2,( case when qs.statement_end_offset =-1 then len(convert(nvarchar(MAX),st.text))*2 else qs.statement_end_offset end - qs.statement_start_offset)/2 )) end as query_text, db_name(st.dbid)as database_name, object_schema_name(st.objectid, st.dbid)+'.'+object_name(st.objectid, st.dbid) as object_name from sys.dm_exec_query_stats qs cross apply sys.dm_exec_sql_text(sql_handle) st where total_logical_reads > 0 order by AvgDur desc
Изменено: 09 сентября 2011 | Добавлено: 09 июня 2011 | Читать далее...
Однажды работая с SQL сервером наткнулся на проблемы работы пользовательской БД. Пытаясь выяснить проблему попробовал подключиться через SQL Server Management Studio, но место подключения получил ошибку: Невозможно открыть пользовательскую базу данных по умолчанию. Связано это с тем что в настройках профиля пользователя через которого пытался войти в SQL Server Management Studio по умолчанию стояла как раз эта пользовательская база. Для решения проблемы нужно сменить пользовательскую БД на системную БД master. Для это нужно запустить cmd.exe и в ней выполнить:
c:\> sqlcmd -S SQLSERVER -d master 1> alter login SKYNET with default_database = master 2> go 3> exitСоотвественно SQLSERVER имя SQL сервера, SKYNET логин входа в SQL Server Management Studio.
Добавлено: 29 апреля 2011 | Читать далее...
Когда запись удаляется, в файле БД высвобождается место. Когда вставляется новая запись, это может привести к расщеплению страниц, что приводит к появлению пустого пространства на страницах данных. Когда данный обновляются, это может привести к изменению размера записи и к возникновению двух ранее упоминавшихся случаев. Все это приводит к фрагментации. В SQL Server рассматриваются два типа фрагментации: внутренняя и внешняя.
В идеале страницы должны быть подлинкованы слева направо в порядке хранения данных. Вследствие расщепления страниц этот порядок может быть нарушен. Это приводит как к неполному заполнению страниц, так и к увеличению операций I/O вследствие непоследовательного положения цепочек страниц на диске – это вызывает дополнительные перемещения головок с цилиндра на цилиндр диска. А это одна из наиболее медленных дисковых операций.
Команда DBCC SHOWCONTIG помогает определить как внутреннюю так и внешнюю фрагментацию.
- Внутренняя подразумевает пустоты внутри страницы
- Внешняя – непоследовательность связей страниц
В идеале страницы должны быть подлинкованы слева направо в порядке хранения данных. Вследствие расщепления страниц этот порядок может быть нарушен. Это приводит как к неполному заполнению страниц, так и к увеличению операций I/O вследствие непоследовательного положения цепочек страниц на диске – это вызывает дополнительные перемещения головок с цилиндра на цилиндр диска. А это одна из наиболее медленных дисковых операций.
Команда DBCC SHOWCONTIG помогает определить как внутреннюю так и внешнюю фрагментацию.
Добавлено: 21 апреля 2011 | Читать далее...
Индексы не выбираются на основании анализа распределенной статистики. В SQL Server 2000 статистика хранится в поле данных для хранения имиджей. То есть – растет пропорционально размеру индекса, это позволяет не терять точность при увеличении размера индексов.
Что бы понять что из себя представляет статистика, рассмотрим следующий пример. Возьмем таблицу Orders из базы данных Northwind. Если мы выполним следующий запрос:
Что бы понять что из себя представляет статистика, рассмотрим следующий пример. Возьмем таблицу Orders из базы данных Northwind. Если мы выполним следующий запрос:
SELECT TOP 24 OrderID, convert(char(11), OrderDate) FROM Orders ORDER BY OrderDate
Изменено: 09 сентября 2011 | Добавлено: 21 апреля 2011 | Читать далее...
Настройка сервера:
- Информация о сервере
select @@version
- Показывает расширенные настройки конфигурирования
sp_configure 'show advanced options' 1 reconfigure
- Просмотр доступных настроек
sp_configure
- Применить изменения конфигурации если не требуется перезапуск сервера
sp_configure <настройка> <допустимое значение настройки> reconfigure
Изменено: 04 февраля 2015 | Добавлено: 20 апреля 2011 | Читать далее...
При попытке отключения "publishing and distribution" выходит ошибка.
Проблемой такой ошибки может быть потеря связки схемы dbo на логин sa. Для этого на всех не системных базах данных нужно выполнить:
Error SQL Server писал(а): |
Cannot execut as the database principal because the principal "dbo" does not exist, this type of pricipal cannot be impersonated, or you do not have permission. Change database conext to 'mydb'(Sql sErver error: 15517) |
Проблемой такой ошибки может быть потеря связки схемы dbo на логин sa. Для этого на всех не системных базах данных нужно выполнить:
exec sp_changedbowner 'sa'
Изменено: 30 июня 2011 | Добавлено: 20 апреля 2011 | Читать далее...
Для того, чтобы сделать выборку из таблицы, расположенной на другом сервере или получить результат выполнения расположенной там функции или хранимой процедуры, в Microsoft SQL Server предусмотрен механизм распределенных запросов. Для использования этого механизма целевые сервера должны быть предварительно связаны.Настраивают связанный сервер с помощью SQL Server Management Studio или системной хранимой процедуры sp_addlinkedserver.
Для связывания на сервере запустите SQL Server Management Studio, раскройте узел Server Objects. В контекстном меню узла Linked Servers выберите пункт New Linked Server. На вкладке General нужно ввести имя связываемого сервера и выбрать тип сервера SQL Server. На вкладке Security. Выберите переключатель "Be made using the security context" и введите логин и пароль для доступа к удаленному серверу.
После этого вы сможете выполнять запросы к таблицам удаленного сервера используя четырехкомпонентное имя:
Для связывания на сервере запустите SQL Server Management Studio, раскройте узел Server Objects. В контекстном меню узла Linked Servers выберите пункт New Linked Server. На вкладке General нужно ввести имя связываемого сервера и выбрать тип сервера SQL Server. На вкладке Security. Выберите переключатель "Be made using the security context" и введите логин и пароль для доступа к удаленному серверу.
После этого вы сможете выполнять запросы к таблицам удаленного сервера используя четырехкомпонентное имя:
имя_связанного_сервера.база_данных.схема.имя_объекта
Добавлено: 20 апреля 2011 | Читать далее...
Иногда возникает необходимость перенесения базы данных tempdb на другой жесткий диск для увеличения производительности SQL сервера. Для этого нужно выполнить SQL пакет:
use master alter database tempdb modify file( name = tempdev, filename = N'<путь к новому месту хранения>\tempdb.mdf') go alter database tempdb modify file( name = templog, filename = N'<путь к новому месту хранения>\templog.ldf')Затем нужно перезапустить MS SQL Server. При перезапуске сервер баз данных создаст базу tempdb в новом месте, а старые файлы можно удалить вручную.
Добавлено: 20 апреля 2011 | Читать далее...