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

Проблемы с подключением базы данных

$
0
0
Вечер добрый. Не совсем уверен,в правильный ли раздел я обратился. Но надеюсь что смогу узнать ответы и в этом.
Суть проблемы такова: при подключении "Файла базы данных Microsoft SQL Server (SqlClient)" в c# мне нужно выбрать источник данных Data Source(единственный из предлагаемых,там только LocalDB),который я не хочу выбирать. Т.к я удалил его из sql и даже если и выберу то появится ошибка. А просто оставить пустое место тоже нельзя,выдает ошибку
Теперь вопрос.Можно ли удалить источник LocalDB из списка и оставить пустое место в этом разделе? Либо если же нельзя оставлять его пустым. То подскажите что можно там указать? LocalDB не хочу ставить т.к не везде он установлен.
Надеюсь на вашу помощь

Приложил скрины ошибок(на всякий случай)

Разный результат при запросе одной и той же строки таблицы

$
0
0
Кто может объяснить, почему получаю разный результат по одной и той же строке таблицы (от ANSI_PADDING OFF отказаться нельзя) :
-- создание таблицы с ansi_padding off
set ansi_padding off
GO
create table #t (a char(3) null)
GO
set ansi_padding on
GO
insert #t values ('1')
GO
-- 1 запрос
select a+'!' 
from(
select a from #t
union all
select '2'
) b
-- 2 запрос
select a+'!' from #t

Результат :

----
1 !
2!

(2 row(s) affected)


----
1!

(1 row(s) affected)

CHECK для диапазона времени

$
0
0
Есть таблица с логином оператора, датой начала и датой завершения некоторого процесса. Как сделать ограничение, чтобы при добавлении новой записи у оператора не было пересечения периодов? Написал скалярную функцию, но мне кажется должно быть другое, более простое (и более скоростное) решение.
+
CREATE TABLE [dbo].[OperList](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[Operator] [varchar](10) NOT NULL,
	[StartDate] [smalldatetime] NOT NULL,
	[EndDate] [smalldatetime] NOT NULL,
	[Stamp] [datetime] NOT NULL CONSTRAINT [DF_OperList_Stamp]  DEFAULT (getdate()),
)

ALTER TABLE [dbo].[OperList]  WITH CHECK ADD  CONSTRAINT [CK_OperList_Date] CHECK  (([Startdate]<[EndDate]))

ALTER TABLE [dbo].[OperList]  WITH CHECK ADD  CONSTRAINT [CK_OperList_Period] CHECK  (([dbo].[fnCheckOperPeriod]()=(0)))


ALTER FUNCTION [dbo].[fnCheckOperPeriod]
(
	-- Add the parameters for the function here
)
RETURNS int
AS
BEGIN
	DECLARE @res int = 0
	set @res = (
					SELECT count(*) as Total
					FROM [dbo].[OperList] O1
					inner join [dbo].[OperList] O2
						on O1.id <> O2.id
							and O1.Operator = O2.Operator
							and (
								(O2.StartDate > O1.Startdate and O2.StartDate < O1.EndDate)
									or
								(O2.EndDate > O1.Startdate and O2.EndDate < O1.EndDate)
									or
								(O2.StartDate > O1.StartDate and O2.EndDate < O1.EndDate)
									or
								(O2.StartDate < O1.StartDate and O2.EndDate > O1.EndDate)
								)
				)

	RETURN @res

END

Не работает Kerberos для MS SQL Server2016

$
0
0
Коллеги, что еще может помочь включить kerberos для ms sql server.
Дано: sql 2016 13.0.4001.0, домен 2012, инстанс по умолчанию, учетная запись выделенная

Сделал
SPN прописал с помощью команд :
setspn -A MSSQLSvc/server.domen.net:1433 учетка
setspn -A MSSQLSvc/server.domen.net: учетка

в консоли ADSI эти SPN есть у учетки, так же добавил дополнительно права на чтение \запись SPN для SELF, даже для машины предоставил эти права
ошибка одна и та же:

автор
Windows return code: 0x2098, state: 15. Failure to register a SPN might cause integrated authentication to use NTLM instead of Kerberos. This is an informational message. Further action is only required if Kerberos authentication is required by authentication policies and if the SPN has not been manually registered.

ПО Microsoft® Kerberos Configuration Manager for SQL Server для 2016 не работает, нет возможности посмотреть, что она скажет.

Процедуру делаю не впервой , регистрировал не раз, а тут затык.

Аналог TOP 1

$
0
0
Подскажите, что использовать для вывода одной строки в запросе, чтобы он работал везде.
Имеется ввиду что в MySql допустим используется LIMIT, а не TOP.

В общем как на чистом SQL вывести только одну запись?

Монитор активности, странные всплески

$
0
0
При сезонном возрастании нарузки на сервер, на мониторе активности отмечается странное поведение:
Ровно раз в минуту возникают всплески на графике ожидающих задач - второй слева.
Как следствие, слегка тормозятся SQL каманды на сервере (вставки, чтения)

При этом в системе нет(не найдено) приложений/джобов, которые выполнялись бы с тем же циклом.

Чем это может быть вызвано?

select @@version
Microsoft SQL Server 2008 (SP4) - 10.0.6000.29 (X64)   Sep  3 2014 04:11:34   Copyright (c) 1988-2008 Microsoft Corporation  Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) 

Приложены изображения: монитор активности, текущая память.
Знаю, памяти маловато но при значения Page life expectancy немного > 300 картина не меняется.

SQLServerAgent Error: 229

$
0
0
SELECT @@version

Microsoft SQL Server 2014 - 12.0.2000.8 (X64) 
	Feb 20 2014 20:04:26 
	Copyright (c) Microsoft Corporation
	Express Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: )

Пытаюсь стартануть Агента, выдает в логах
2016-11-30 14:50:27 - ? [100] Microsoft SQLServerAgent version 12.0.2000.8 (X64 unicode retail build) : Process ID 11360
2016-11-30 14:50:27 - ? [495] The SQL Server Agent startup service account is MOON\SRV03$.
2016-11-30 14:50:27 - ? [393] Waiting for SQL Server to recover database 'msdb'...
2016-11-30 14:50:27 - ! [298] SQLServer Error: 229, The EXECUTE permission was denied on the object 'sp_sqlagent_update_agent_xps', database 'msdb', schema 'dbo'. [SQLSTATE 42000] (DisableAgentXPs)
2016-11-30 14:50:27 - ! [000] The EXECUTE permission was denied on the object 'sp_sqlagent_update_agent_xps', database 'msdb', schema 'dbo'. [SQLSTATE 42000] (Error 229)
2016-11-30 14:50:27 - ! [298] SQLServer Error: 229, The EXECUTE permission was denied on the object 'sp_sqlagent_update_agent_xps', database 'msdb', schema 'dbo'. [SQLSTATE 42000] (DisableAgentXPs)
2016-11-30 14:50:27 - ! [000] The EXECUTE permission was denied on the object 'sp_sqlagent_update_agent_xps', database 'msdb', schema 'dbo'. [SQLSTATE 42000] (Error 229)
2016-11-30 14:50:27 - ? [098] SQLServerAgent terminated (normally)

Что нужно сделать ? Как правильно стартануть ?

Построчный декремент на значение поля?

$
0
0
Уважаемые, подскажите пожалуйста, с какой стороны подойти к решению такой проблемы: есть список товаров на разных складах (у каждого склада свой уровень приоритета), нужно получить определённое количество предметов с этих складов, при том одно наименование предмета может быть получено как целиком из одного склада (если количество достаточно), так и из нескольких складов (в соответствии с приоритетом склада). На скриншоте примерно то, что хотелось бы получить:
Картинка с другого сайта.
Предмета А требуется 5 штук и он полностью берётся со склада S1 комната 1W1, а предмет B берётся со складов S1-1W1, S2-2W2, S3-3W2 и остаток из S4-4W1 (или S4-4W2, тут не принципиально т.к. приоритет равный). Сам побороть проблему не могу, т.к. не понимаю, с какой стороны тут браться... Так что за любую помощь буду очень благодарен.

Если требуется заготовка на поэкспериментировать, то вот:

declare @AvailableStock table (
  ItemCode varchar(20),
  Store varchar(2),
  Room varchar(3),
  StoreRank int,
  Quantity int
);

insert into @AvailableStock values ('A', 'S1', '1W1', 1, 10);
insert into @AvailableStock values ('A', 'S1', '1W2', 2, 10);
insert into @AvailableStock values ('A', 'S2', '2W1', 10, 10);
insert into @AvailableStock values ('A', 'S3', '3W1', 20, 10);
insert into @AvailableStock values ('A', 'S3', '3W2', 20, 10);

insert into @AvailableStock values ('B', 'S1', '1W1', 1, 2);
insert into @AvailableStock values ('B', 'S2', '2W1', 10, 3);
insert into @AvailableStock values ('B', 'S3', '3W2', 20, 1);
insert into @AvailableStock values ('B', 'S4', '4W1', 30, 2);
insert into @AvailableStock values ('B', 'S4', '4W2', 30, 2);


declare @NeedStock table (
  ItemCode varchar(20),
  Quantity int
);
insert into @NeedStock values ('A', 5);
insert into @NeedStock values ('B', 7);

select Avail.*,Need.Quantity as NeedQuantity from @AvailableStock Avail
join @NeedStock Need on Avail.ItemCode=Need.ItemCode
order by ItemCode, StoreRank;

SQL Server: Значение поля Identity резко прыгнуло на 5200

$
0
0
Проблема: SQL Server: Значение поля Identity резко прыгнуло на 5200
До этого прыгало на 800-900 записей, а сейчас взяло и пригнуло на 5200 записей.
С данной таблицей "работает" (пишет) всего-ничего 1 (один) человек.
Нужно что бы записи шли ОБЯЗАТЕЛЬНО (по-закону) по порядку, я каждый раз сижу и правлю вручную.
Ну и вопрос:
Как этого избежать?

П.С.
Сейчас сделал так: нахожу максимум + 1.
Но это как-то не по человечески ...

Запись данных типа "Двоичные данные" в таблицу MS SQL

$
0
0
Доброе время суток. Имеется БД 1С на SQL, нужно в БД в таблице dbo.v8users в столбце AdmRole изменить значение с 0x00 на 0x01 (эти значение посмотрел, выбрав строки).
Если я из SSMS делаю "Изменить первые 200 строк", и вручную ввожу данные (01) то получаю ошибку - см скриншот. Вопрос - каким образом из SSMS или запросом записать двоичные данные в таблицу ?

встреча Kazan SQL&BI UserGroup 14 декабря

$
0
0
Казань снова собирает любителей и профессионалов SQL Server. На встрече будут доклады: 1) SQL: Топ 10 практических советов 2) Оптимизация запросов. Быстрый старт.

Место встречи: Офисный центр «Сувар плаза» ул. Спартаковская, д. 6, 9 этаж
Начало: 14 декабря 19:00

Регистрация: https://kazan-sql-bi-usergroup.timepad.ru/event/415091/

пятое окно в мониторе активности SQL Server 2016

$
0
0
Кто знает зачем (что будет показывать) 5ое окно в мониторе активности в новом сервере?

получить код ошибки xp_cmdshell

$
0
0
подскажите, как получить "настоящий" код ошибки после выполнения xp_cmdshell?
например, делаю так:
declare
   @cl nvarchar(1000) -- command line
   , @res int -- result

set @cl = 'dir "c:\123.txt"'
exec @res = master..xp_cmdshell @cl, no_output -- проверяем, есть ли файл


возвратит либо 0, либо 1
а как получить код выполнения самого dir, а не процедуры?

SOS_SCHEDULER_YIELD, кто нибудь сталкивался?

$
0
0
В общем наткулся на статью http://www.sqlskills.com/blogs/paul/worrying-wait-type/, там этот тип указало аж 9%. Смотрел как то выступление Олонцева, он там упоминал этот тип и сказал что он встречался ему всего один раз, я тоже не разу не сталкивался, знакомые админы тоже, а тут аж 9%! Хотя я думаю народ просто указал что у них есть этот тип, хотя он не всегда является проблемой, http://dba.stackexchange.com/questions/106808/sos-scheduler-yield-wait-type.
В чем собственно вопрос, кто сталкивался с проблемами из за этого типа, в чем была их причина и как решили?
Просто я до конца так и не понял, что может его вызвать чтобы он стал проблемой.

Как sql доходит к IAM странице

$
0
0
У индекса есть страница IAM с которой мы можем дойти до наших данных для запроса.
А как он узнает где IAM конкретного индекса находится?
привязка должна быть примерно такого objId - PAgeIam, если не ошибаюсь
PFS,SGAM GAM это не содержат, тогда?

SQL 2008 R2 План обслуживания

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

Есть SQL 2008 R2

Есть план обслуживания:
Модель восстановления баз ПОЛНАЯ
Делаются бэкапы как ПОЛНЫЙ, а так же каждый час бэкапы журналов транзакций

1. план раз в сутки

Проверка целостности
Резервное копирование базы данный (тип полная)
Задача, Очистка журнала старше, чем 2 недели
Очистка после обслуживания, старше , чем 5 дней

2. План каждый час

резервное копирование базы данных (тип: Журнал транзакций)
Задача, Очистка журнала старше, чем 2 недели
Очистка после обслуживания, старше , чем 5 дней


Вопрос в том, что бывший админ говорит что необходимо настроить SHRINK в плане обслуживания, что бы логами не забилось место. Он бывший админ и спорить с ним трудно потому что он все еще тут как бы рулит, а я вникаю.

Правильно ли я понимаю, что при полной модели восстановления, а так же при регулярных бэкапах журналов транзакций, логи не должны разбухать?

Или план обслуживания неверный? При размере базы 23 ГБ, Журнал транзакций 8Гб - должен ли быть журнал транзакций таким большим?

nonclustered index пытается наложить блокировку на кластерный индекс

$
0
0
select id from request where isdeleted = 1 and RequestStatusID=3 and AutoDistributeDateTime< GETDATE()

Выборка происходит по некластерному индексу(согласно плану запроса Index seek(non clustered))
Получаю дедлок с другим запросом(update), согласно логу выше указанный запрос пытается получить доступ к кластерному индексу(доступ - S)
Зачем ему кластерный индекс,если в плане запроса указан некластерный индекс и key lookup отсутствует?

Можно ли оптимизнуть такой LEFT OUTER JOIN?

$
0
0
Есть запрос типа такого, прибольшом количестве записей (> 1млн) работает не быстро и вызывает блокировки.
Можно ли как-то по-другому извернуться, чтобы ускорить?

SELECT t1_id, t2_name, t3_int, t4_text, t5_value
FROM t1 
  LEFT OUTER JOIN t2 ON (t2_id = t1_id) 
  LEFT OUTER JOIN t3 ON (t3_id = t1_id) 
  LEFT OUTER JOIN t4 ON (t4_id = t1_id)
  LEFT OUTER JOIN t5 ON (t5_id = t1_id)

Ошибка в рекурсивном запросе

$
0
0
Прошу помощи.
Есть таблица
DECLARE @p TABLE (id INT, name NCHAR(100), obj_id CHAR(10), parent CHAR(10))

В ней данные
INSERT @p SELECT 0,'Иванов','IVA','0' /*big boss*/
INSERT @p SELECT 1,'Петров','PETR','IVA' /*Подчинен Иванову*/
INSERT @p SELECT 2,'Васечкин','VAS','IVA' /*Подчинен Иванову*/
INSERT @p SELECT 3,'Сидоров','CID','PETR' /*Подчинен Петрову*/
INSERT @p SELECT 4,'Пупкин','PUP','PETR' /*Подчинен Петрову*/
INSERT @p SELECT 5,'Гадюков','GAD','PUP' /*Подчинен Пупкину*/
INSERT @p SELECT 6,'Котов','KOT','GAD' /*Подчинен Гадюкову*/
INSERT @p SELECT 7,'Непоймикто','NONAME','KOT' /*Подчинен Котову*/

Хочу построить дерево подчинения, чтобы на выходе иметь что-то типа

ИвановИванов
ПетровИванов/Петров
ВасечкинИванов/Васечкин
СидоровИванов/Петров/Сидоров
ПупкинИванов/Петров/Пупкин
ГадюковИванов/Петров/Пупкин/Гадюков
КотовИванов/Петров/Пупкин/Гадюков/Котов
НепоймиктоИванов/Петров/Пупкин/Гадюков/Котов/Непоймикто


Как-то так:
with  tree (id_t, name_t, level_t, path_t)
as (select id, name, 0, name
   from @p
   where parent='0'
union all
   select p.id, 
	   p.name, 
	   tree.level_t + 1, 
	   tree.name_t + ' / ' + p.name 
   from @p p
     inner join tree on tree.id_t = p.parent)

Ловлю исключение
Types don't match between the anchor and the recursive part in column "path_t" of recursive query "tree".
Какие типы не совпадают?

Report Server сьедаеет все ресурсы CPU.

$
0
0
Здравствуйте.
Подскажите, пжлст, может кто сталкивался. Репортсервер прод среде при запуска отчета выжирает весь ресурс ЦПУ на сервере БД.
При чем сервер не слабый 30 ГД ОЗУ, 4 ядра по 2.5 ГГЦ (AWS). На QA среде сервер стоит слабее, и но такой загрузки и близко нет.
Пробовали пересобирать статистику. Не помогло. Загрузка процессора прежняя. Клиент кричит, что все плохо и так быть не должно.
В сети много статей о том, что нужно смотреть долго работающий запросы, но что толку? Если статистика собирается регулярно, то их же никто переписывать не будет и так как репортов очень много то на это уйдут месяцы. В общем не совсем понятно что делать.
Viewing all 7251 articles
Browse latest View live