Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all 7251 articles
Browse latest View live

Как выполнить скрипт из переменной?

$
0
0
Есть такой скрипт, создающий скрипт:
+
DECLARE @t_Src sysname = 'tst'
	, @t_Dst sysname 
	, @cmd nvarchar(max)=''
	
SET @t_Dst = 'log_' + @t_Src
	
		
--===========================================================================================
	IF not exists(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @t_Dst)
		SET @cmd = @cmd 
	
	+ CHAR(10) +'USE ' + QUOTENAME(DB_NAME())
	+ CHAR(10) +'GO'
	+ CHAR(10) +'BEGIN TRANSACTION'
	+ CHAR(10) +'GO'
	+ CHAR(10) +'CREATE TABLE dbo.' + QUOTENAME(@t_Dst)
	+ CHAR(10) +'('
	+ CHAR(10) +' prDt datetime NULL,'
	+ CHAR(10) +' prVid nchar(1) NULL,'
	+ CHAR(10) +' prComp nvarchar(128) NULL,'
	+ CHAR(10) +' prDB nvarchar(128) NULL,'
	+ CHAR(10) +' prUser nvarchar(128) NULL,'
	+ CHAR(10) +' prKeyW int NULL'
	+ CHAR(10) +' )  ON [PRIMARY]'
	+ CHAR(10) +'GO'
	+ CHAR(10) +'DECLARE @v sql_variant '
	+ CHAR(10) +'SET @v = N''дата изменения'''
	+ CHAR(10) +'EXECUTE sp_addextendedproperty N''MS_Description'', @v, N''SCHEMA'', N''dbo'', N''TABLE'', N' + QUOTENAME(@t_Dst,'''') + ', N''COLUMN'', N''prDt'''
	+ CHAR(10) +'GO'
	+ CHAR(10) +'DECLARE @v sql_variant '
	+ CHAR(10) +'SET @v = N''тип изменения - Д И У'''
	+ CHAR(10) +'EXECUTE sp_addextendedproperty N''MS_Description'', @v, N''SCHEMA'', N''dbo'', N''TABLE'', N'+ QUOTENAME(@t_Dst,'''') + ', N''COLUMN'', N''prVid'''
	+ CHAR(10) +'GO'
	+ CHAR(10) +'DECLARE @v sql_variant '
	+ CHAR(10) +'SET @v = N''компьютер, который сделал изменения'''
	+ CHAR(10) +'EXECUTE sp_addextendedproperty N''MS_Description'', @v, N''SCHEMA'', N''dbo'', N''TABLE'', N'+ QUOTENAME(@t_Dst,'''') + ', N''COLUMN'', N''prComp'''
	+ CHAR(10) +'GO'
	+ CHAR(10) +'DECLARE @v sql_variant '
	+ CHAR(10) +'SET @v = N''Для какой базы сделаны изменения'''
	+ CHAR(10) +'EXECUTE sp_addextendedproperty N''MS_Description'', @v, N''SCHEMA'', N''dbo'', N''TABLE'', N'+ QUOTENAME(@t_Dst,'''') + ', N''COLUMN'', N''prDB'''
	+ CHAR(10) +'GO'
	+ CHAR(10) +'DECLARE @v sql_variant '
	+ CHAR(10) +'SET @v = N''пользователь, который внес изменения'''
	+ CHAR(10) +'EXECUTE sp_addextendedproperty N''MS_Description'', @v, N''SCHEMA'', N''dbo'', N''TABLE'', N'+ QUOTENAME(@t_Dst,'''') + ', N''COLUMN'', N''prUser'''
	+ CHAR(10) +'GO'
	+ CHAR(10) +'DECLARE @v sql_variant '
	+ CHAR(10) +'SET @v = N''пользователь в приложении, который внес изменения'''
	+ CHAR(10) +'EXECUTE sp_addextendedproperty N''MS_Description'', @v, N''SCHEMA'', N''dbo'', N''TABLE'', N'+ QUOTENAME(@t_Dst,'''') + ', N''COLUMN'', N''prKeyW'''
	+ CHAR(10) +'GO'
	+ CHAR(10) +'ALTER TABLE dbo.'+ QUOTENAME(@t_Dst) + ' ADD CONSTRAINT'
	+ CHAR(10) +'	DF_'+ @t_Dst + '_prDt DEFAULT (getdate()) FOR prDt'
	+ CHAR(10) +'GO'
	+ CHAR(10) +'ALTER TABLE dbo.'+ QUOTENAME(@t_Dst) + ' SET (LOCK_ESCALATION = TABLE)'
	+ CHAR(10) +'GO'
	+ CHAR(10) +'COMMIT'
--===========================================================================================

print @cmd
exec (@cmd)

если текст собранной команды выполнить в окне SSMS, то он выполняется без ошибок. А если пытаться выполнить exec (@cmd), то выполнение заканчивается ошибой.
Подскажите, как можно выполнить такой скрипт?

ms sql 2012 sp2, cu8: аномально высокие значения FT_IFTSHC_MUTEX, низкая скорость зеркала

$
0
0
есть 2 сервера, объединенные в AAG. при массивных изменениях на примари, на секондари скорость применения изменений составляет 10 мегабайт в сек (бенчмарки диска показывают 500 мегабайт в секунду)

в то же самое время (на сервере не установлен полнотекстовый поиск) вижу, что время на реплике расходуется на мьютексы FT_IFTSHC_MUTEX, и, собственно, зеркалирование тоже ждет столько же, сколько полнотекст

вопросы

1) полнотекстовый поиск не установлен. откуда берутся такие мьютексы ?
2) как проверить, влияют ли эти мьютексы на скорость репликации ?

Помогите написать запрос на SQL плис

$
0
0
Есть таблица заявок от пользователей с полями ID, CreateDate, UserID, Theme, Description и таблица пользователей с полями ID, Name. Составьте запрос, который бы считал поквартально количество заявок, который создал каждый пользователь,
со следующими полями:
- имя пользователя
- количество заявок, который создал пользователь
- год
- квартал
- всего заявок, созданных пользователями
- % заявок, созданных пользователем от общего количества заявок, созданных всеми пользователями.

SSMS-Setup-ENU.exe

Amazon redshift

$
0
0
Подскажите, возможно ли залинковать базу данных Amazon redshift к серверу MSSQL Server 2012, или как получить доступ к amazon redshift из mssql?

Генерация интервало дат

$
0
0
2 день туплю, пытаюсь придумать как элегантно создать интервалы...
Условия такие - есть значит рабочее время (начало и конец) и есть промежутки в которые необходимо "вычесть из этих интервалов".

1 и 2 столбец это "занятые промежутки", 3 и 4 это время работы

Для примера

2016-05-24 08:15:00.000 | 2016-05-24 08:45:00.000 | 2016-05-24 08:00:00.000 | 2016-05-24 16:00:00.000
2016-05-26 09:00:00.000 | 2016-05-26 09:30:00.000 | 2016-05-26 08:00:00.000 | 2016-05-26 16:00:00.000
2016-05-26 08:30:00.000 | 2016-05-26 09:00:00.000 | 2016-05-26 08:00:00.000 | 2016-05-26 16:00:00.000
2016-06-09 09:45:00.000 | 2016-06-09 10:15:00.000 | 2016-06-09 08:00:00.000 | 2016-06-09 16:00:00.000


В итоге надо получить доступные интервалы что то типа -

с 8,00 до 8,15 - 24
с 8,45 до 16,00 - 24
с 8,00 до 8,30 - 26
с 9,30 до 16,00 - 26
с 8,00 до 9,45 - 09
с 10,15 до 16,00 - 09

Ошибка в запросе при выполнении объединения varchar

$
0
0
Добрый день.

Есть запрос объединяющий 2 varchar(250):

SELECT 
t2.[Info]+t4.[INFO]  
FROM AESBASES.dbo.RALARM t1
left join AESBASES.dbo.places t2 on t1.IDOtis=t2.IDOtis
left join AESBASES.dbo.Technik_id t3 on t1.IDTech=t3.tech_id
left join CARDS t4 on t2.OrgID=t4.ORGID and t2.Otis=t4.OTISNUMBER
where 
WHEN_DATE>=getdate()-10
and t1.IDTech=142 and t1.KKP=0
order by WHEN_DATE


При его выполнении выходит ошибка:
Не удалось выполнить неявное преобразование значения varchar в varchar, поскольку параметры сортировки значений являются неразрешимыми вследствие конфликта параметров сортировки.
Как исправить, чтобы запрос исполнялся?

Rebuild кластерного индекса

$
0
0
Всем привет.
Коллеги, никак один вопрос побороть не могу.
MSSQL 2012, отчёт "физическая статистика индекса" показывает ряд индексов, которые подлежат перестроению или реорганизации.
На примере одного индекса опишу свой вопрос.
Есть таблица L_Area_Area , которая содержит индекс PK_Area_Area. Данный индекс - кластеризованный.
avg_fragmentation_in_percent данного индекса = 85,7142857142857
Согласно доке https://msdn.microsoft.com/ru-ru/library/ms189858.aspx#Fragmentation , если величина более 30% , то индекс подлежит реорганизации.
Произвожу реорганизацию:

USE MYDB;
GO
ALTER INDEX PK_Area_Area ON L_Area_Area
REBUILD;
GO

Через management studio из GUI так же пробовал. Всё выполняется, однако, последующее построение отчета использования индекса не меняет значение средней фрагментации, так и остаётся 86%.
Подскажите куда копнуть, чтоб всё же сделать фрагментацию меньше. Спасибо

Создание связанного сервера к файлу access, ОС win7 x64, офис MS Office 2003 (x86)

$
0
0
Установлен ms sql server 2012 x64, AccessDatabaseEngine_x64.
Напишите, пожалуйста, как заполнять поля в среде SSMS:
поставщик, название продукта, источник данных, строка поставщика, чтобы создать связанный сервер к файлу Access.

Уникальные числа

$
0
0
Всем привет. У меня есть строка (varchar), в которой через запятую содержутся числа:

1,4,3,5,2,3,4,2,2

Нужно сделать так, чтобы убрать повторяющиеся числа:

1,4,3,5,2

Как это сделать? Есть вариант, чтобы строку через зяпятую превратить в столбец, сделать из него выборку distinct и с помощью for xmlpath вернуть обратно. В связи с этим вопрос - как развернуть строку в столбец (по зяпятой), чтобы потом сделать из него выборку distinct?

Параллелелизм

$
0
0
При использовании IS_MEMBER('группа') либо при обращении к схеме sys параллелелизм отключается(судя по плану выполнения). Как сделать запрос с сохранением параллелелизма при наличии IS_MEMBER('группа') или sys. таблиц ? Проверялось на SQL Server 2008 R2.

Cumulative Update #4 for SQL Server 2012 SP3

Cumulative Update #13 for SQL Server 2012 SP2

Solver в sql server?

$
0
0
Чисто теоретически вопрос. Кому-нибудь доводилось встраивать CLR сборку в сервер для решения задачи нелинейный или линейной оптимизации, поиска экстремизме функции? Возможно ли вообще эдакое? Например, создание сборки с ms solver foundation.

SSMS тормозит

$
0
0
Из за чего может тормозить SSMS 2012?
Пишу скрипт и периодически такие подвисания когда пишу ключевые слова или названия полей например..
Кто нибудь лечил такое?

Вопрос по колоночному индексу

$
0
0
Коллеги,

Возможно кто-нибудь знает, почему при BUKL-вставке с Row per batch = 1048576
в таблицу с кластерным колоночным индексом таблица действительно бьется на секции с указаным числом записей (что подтвержается select row_count from sys.column_store_segments), а вот если перестроить/пересоздать индекс (или грузить в таблицу без интекса, а затем создать его), то таблица сразу вырастает в размере, а количество строк в секции хаотично плавает ?

rows reserved data index_size unused
36690836 3874104 KB 3873888 KB 56 KB 160 KB -- без индексов
36690836 766904 KB 754224 KB 240 KB 12440 KB -- если CCIX есть до вставки - минимальный объем
36690836 818112 KB 817984 KB 0 KB 128 KB -- удалил и создал CCIX
36690836 814720 KB 814552 KB 0 KB 168 KB -- сделал REBUILD CCIX



Microsoft SQL Server 2014 - 12.0.4100.1 (X64) Apr 20 2015 17:29:27 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: )

Сравнение двух записей в таблице.

$
0
0
Задача следующая: есть таблица с колонками ID, Дата, Сумма. В запросе нужно вывести те записи в которых произошло изменение суммы. Пример:
№ ID Дата Сумма
1 22 2016.06.13 60
2 31 2016.06.01 60
3 33 2016.05.24 40
4 31 2016.04.11 50
5 46 2016.05.05 50

То есть в результате запроса должны увидеть записи № 2, 3, 4.
Помогите пожалуйста с запросом. Заранее спасибо!

Восстановление БД из full backup на ежедневной основе

$
0
0
Добрый день,

Посдкажите, пжл. Реализовано воостановление БД из full backup каждый день ночью.
Какой бы придумать механизм, чтобы текущие пользователи не теряли права доступа.

[MDS]

$
0
0
Друзья!

Имею в распоряжении MDS и SQL Server 2012 (Microsoft SQL Server 2012 (SP3-CU2) (KB3137746) - 11.0.6523.0 (X64) Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ))

Также имею проблему при работе через Add-IN MDS для EXCEL.
Проблема в следующем: при добавлении записи через эксель и ее публикации одним из пользователей в "$OriginalCode$" получем UID и "Ошибка" в "$InputStatus$". При добавлении и публикации другим пользователем в "$OriginalCode$" получаем осмысленную текстовую строку.

Результат гугления данной ситуации говорит, что перепутаны типы данных (как раз грешу на UID в "$OriginalCode$")

Прошу помощи!

Исчезновение временной ##таблицы при отладке

$
0
0
sql2012

Описано ли где-нибудь поведение отладчика, когда глобальная временная таблица, созданная внутри процедуры при отладке не выживает при следующем запуске отладки этой процедуры? Пропадает, даже если к этой таблице обратились из соседнего spid.
Viewing all 7251 articles
Browse latest View live