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

Почему в скулесервере нет цикла FOR?

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

Почему в скулесервере нет цикла FOR?


Это ведь довольно отстойно... не?

статистика селектов к таблице

$
0
0
Хотел бы получить статистику селектов к таблице - узнать когда и какие селекты были.
Как настраивается такой аудит?

Построить запрос (возможно рекурсия)

$
0
0
Добрый день, не могу построить запрос. Фото, что должно быть на выходе приложил.

Есть таблица, где поля Id, ParentId.

Мне нужно подать на вход значение id (99999), запрос должен вернуть всех косвенных родителей для данной записи. Это вообще реально сделать однтм запросом?

Может быть есть лучше/проще способы?

Query Store

$
0
0
Неоднократно сталкивался, что Query Store (QS) серьезно переходит лимит по размеру. Скажем установленно 2Гб, а он в легкую разбухает до 5Гб. И вроде бы ничего страшного если бы после этого он не начинал чиститься ну очень долго (и как обычно не во время). И при этом потребляет до 30-50% CPU.
И самое противное, что этот процесс не остановить, т.к. чистка происходит под системыми сессиями (<50) и убивать такую сессию как то не с руки. В течение этого процесса (если точнее сам процесс чистки состоит из нескольких подпроцессов, тут четкости от Майрософта нет) что либо (к примеру перевод в оффлайн или удаление всех данных) сделать с QS не возможно, блокируется.

У кого-либо есть инфа почему лимит размера не соблюдается строго?

Версия: 13.0.5337.0.

Бэкап баз в сеть

$
0
0
Всем привет. Знаю, что есть куча инструкций, но есть несколько проблем, которые никаким образом не получается решить.
Не получается прописать учётку в службе.
Дано, доменный компьютер для бэкапа и не доменный с SQL server 2014 express.
Пока для тестов делаю штатными средствами через SSMS, в будущем скопирую этот скрипт, и буду гонять его через планировщик по времени.
Можно ли прописать в службе SQL server пользователя, которого нет на этом компьютере (т.е. пользователя компьютера, куда делается копия)? Пробовал прописывать учётку доменного и локального типа, пишет не правильные данные. Думаю албанский вопрос, но вдруг я что-то недопонимаю и это можно сделать.

Alter function

$
0
0
Пересоздавал объекты скриптом вот так:
if object_id('xxxxx') is null
exec('create function xxxx returns integer as begin return 0 end')
GO

ALTER FUNCTION [dbo].[xxxxx]
.....
Но обнаружил, что для табличных ф-ций альтер фейлится, т.е. нельзя альтером поменять тип ф-ции со скалярного в табличный.
Пришлось допилить формирование скрипта, чтобы прописывал вначале:

create function ххххх returns table as return(select id=0)

Мож кому пригодится.

Почему именно такой способ создания/обновления объектов ?
Он самый оптимальный, ИМХО. Лучше, чем Дроп + криейт.

зы: мсскл2008.

Как исключить все символы из NVARCHAR оставив только числа от 0..9

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

Подскажите самый правильны способ, использую MSSQL2016

Аварийный режим- восстановление базы

$
0
0
БД выпала в аварийный режим

пробую делать

Use master 
go 
sp_configure 'allow updates', 1 
go 
---Execute--- 
reconfigure with override 
---Execute--- 
select status from sysdatabases where name = 'BDname' 
---Execute--- 
EXEC sp_resetstatus 'BDname''; 
ALTER DATABASE BDname' SET EMERGENCY 
---Execute--- 
alter database BDname' set EMERGENCY, SINGLE_USER 
---Execute--- 
dbcc checkdb ('BDname'', REPAIR_ALLOW_DATA_LOSS) 
---Execute--- 
alter database BDname' set ONLINE, MULTI_USER 
---Execute--- 
Use master 
go 
sp_configure 'allow updates', 0 
go 
---Execute--- 
reconfigure with override 



получаю

Сообщение 945, уровень 14, состояние 2, строка 11
Не удалось открыть базу данных "hlt_GORCGB" вследствие недоступности файлов, нехватки памяти или места на диске. Подробности см. в журнале ошибок SQL Server.
Сообщение 824, уровень 24, состояние 2, строка 7
SQL Server обнаружил логическую ошибку ввода-вывода, связанную с согласованностью: разорванная страница (ожидаемая подпись: 0xaaaaaaaa; фактическая подпись: 0x5555aaaa). Она произошла при прочитать страницы (1:9) в базе данных с идентификатором 5 по смещению 0x00000000012000 файла "D:\TrustMed\BD\Etalon_2008.mdf". Дополнительные сведения см. в журнале ошибок SQL Server и журнале системных событий. Это серьезная ошибка, которая угрожает целостности базы данных и должна быть немедленно исправлена. Выполните полную проверку базы данных на согласованность (DBCC CHECKDB). Эта ошибка может быть вызвана многими причинами; дополнительные сведения см. в электронной документации по SQL Server.
Сообщение 824, уровень 24, состояние 2, строка 9
SQL Server обнаружил логическую ошибку ввода-вывода, связанную с согласованностью: разорванная страница (ожидаемая подпись: 0xaaaaaaaa; фактическая подпись: 0x5555aaaa). Она произошла при прочитать страницы (1:9) в базе данных с идентификатором 5 по смещению 0x00000000012000 файла "D:\TrustMed\BD\Etalon_2008.mdf". Дополнительные сведения см. в журнале ошибок SQL Server и журнале системных событий. Это серьезная ошибка, которая угрожает целостности базы данных и должна быть немедленно исправлена. Выполните полную проверку базы данных на согласованность (DBCC CHECKDB). Эта ошибка может быть вызвана многими причинами; дополнительные сведения см. в электронной документации по SQL Server.


Архив есть, но пока не решились БД поднять с архива, жаль информацию за рабочий день
так же сделать детач БД не получается тоже

ХЕЛП!!

Форматирование дисков

$
0
0
MS рекомендует форматировать диски под рабочие базы, лог и темпдб в размер кластера 64к.

- А кто нибудь делал это или об этом только говорят?
- Как вы обошлись с "bytes per sector", "Bytes per physical sector"?
- Форматировали через контроллер или оставили как есть?
- Кроме того, форматировать диск лога в в размер кластера 64к это не перебор?

ЗЫ: спрашиваю, т.к. сейчас переношу базы на новое железо (с ssd дисками), SQL2008R2

Убил сервер, хочу поставить снова

$
0
0
Дома MS SQL 2008 R2 SP 2 Express был под WIn 8.1

Года 3 назад ставил его скачанной с MS инсталляшкой SQLEXPRWT_x64_RUS.exe

Сейчас как-то появилось время поэкспериментировать, захотел ещё раз накатить SP2
Не учёл, что то, что ставилось 3 года назад и скачено у MS сейчас, нельзя смешивать.

В процессе инсталляции вылазит ошибка 2337.
Полазил по инету, люди советуют всё почистить в сервере.

Ну почистил, диск, реестр, службу проверил, что удалилась.
Обновления Windows все накатил.

Старый экземпляр сервера начисто вроде снёс.
Новую инсталяшку SQLEXPRWT_x64_RUS.exe скачал.

Всё равно вылазит эа же ошибка 2337.
Management студия не встала, диагностика выводит ошибку при установке ядра сервера:

Исправление поля image

$
0
0
при записи в поле image данных в формате Base64 записался символ #0 осле каждых двух битов. Произошло из-за неверного преобразования данных в толстом клиенте.
т.е.:
записалось :
0x4A0056004200450052006900300078004C006A0051004B004A0065004C006A007A0039004D004B004E

а должно быть:
0x4A564245526930784C6A514B4A654C6A7A394D4B4E


как мне убрать эти нули запросом (sql 2008)?

is_nullable в sys.parameters

$
0
0
Всем привет.
В 2012 версии нету поля is_nullable в sys.parameters...
Альтернативу я что-то не могу найти.
Может кто подскажет ?

Ошибка 3013: BACKUP DATABASE is terminating abnormally.

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

Написан внутренний поток, который крутиться в MSSQL на базе ServiceBrocker. Написал к потоку задание, которое должно делать бекап базы данных в системную папку самого mssql

При выполнение бекапа через ServiceBrocker, вылетает ошибка:

[ACSH_DatabaseBackup], Строка 21. Ошибка 3013: BACKUP DATABASE is terminating abnormally.


В логе MSSQL не более той что написал.

Хранимка, которая выполняется в указанное время:

CREATE PROCEDURE [ACSH_DatabaseBackup]
  @RunUser		BIT
AS
SET NOCOUNT ON;

BEGIN TRY
  -- Делаем BACKUP.
  DECLARE @DBNAME SYSNAME
  DECLARE @BackupName NVARCHAR(256)

  IF @RunUser = 0
    SET @BackupName = 'Auto'
  ELSE
    SET @BackupName = 'User'

  SET @BackupName = @BackupName + '_' + REPLACE(CONVERT(NVARCHAR(10), GETUTCDATE(), 104), '.', '') + '_' + 
    REPLACE(CONVERT(NVARCHAR(8), GETUTCDATE(), 108), ':', '')
  SET @DBNAME = (SELECT db_name())

  BACKUP DATABASE @DBNAME
    TO DISK = @BackupName  
END TRY
BEGIN CATCH
  ;THROW
END CATCH

RETURN 0
GO


Если её выполнять через пользователя, она выполняется, в через ServiceBrocker ошибка.

Подскажите что можно попробовать?

Нестабильная связь с серверами

$
0
0
Посоветуйте, пожалуйста, как бы вы решали такую проблему.
Небольшая сеть АГЗС из 14 заправок со старым софтом. Базы данных MS SQL. Проблема в том что заправки стоят в удаленных от цивилизации местах и протянуть туда проводной интернет нет возможности. Подключение к интернет по мобильной связи.
Из-за того что связь не стабильная репликация баз в центральный сервер сбоит и нормально не собирает информацию, пробовал настроить выкачку данных с помощью Power BI, тоже при обновлении часто (80%) происходит сбой и отчеты не формируются.

Собственно вопрос, как можно организовать забор данных из этих АГЗС?
Может кто-нибудь имеет опыт решения подобной задачи и готов помочь?

Можно ли как то оптимизировать запрос?

$
0
0
Добрый день. Есть такой запрос:

 SELECT DO.id, CON.oid as oid, DO.start, DO.stop, DO.outSms15 as sms15, DO.outSms30 as sms30, DO.outSms60 as sms60
   FROM Terminal.dbo.Connection  as CON
   LEFT JOIN Terminal.dbo.Downtime  as DO ON CON.OID = DO.oid
   LEFT JOIN Terminal.dbo.Downtime  as DDO ON CON.OID = DDO.oid
	  AND DO.start < DDO.start
   WHERE DDO.id is NULL


Вот примерный результат выполнения:

id oid start stop sms15 sms30 sms60
E822C3A7-89A2-4A16-B918-E7A31DAD44BB 93E8FECB-8782-4357-B0FC-75C147594F50 2019-09-01 15:53:56.000 2019-09-01 16:21:10.000 NULL NULL NULL
6A3917C6-4C9E-4759-B147-02DB544E7FE5 E0472205-8C90-4C66-A5EF-F36BE9399875 2019-07-04 15:00:31.000 NULL 1 1 1
F99E87F1-C206-4428-BA0C-203BE44A171C 5B22FE0E-36A5-42AE-A280-93E6D47B4044 2019-07-08 10:32:51.000 NULL 1 1 1
5997C60C-3524-46DF-BB7D-2CE7725B7DCB 0ADA876A-4C54-4EFB-8D72-62CE5CEE1A3E 2019-09-01 09:00:51.000 2019-09-01 09:06:43.000 NULL NULL NULL


Суть вопроса. Чтобы получить последнюю дату столбца start пишется два одинаковых запроса LEFT JOIN . Далее сравнивается большее значение даты DO.start < DDO.start.

Вопрос, можно ли как то упростить запрос. Чтобы он выполнялся быстрее?

Поломался план обслуживания. Не работает бэкап.

$
0
0
Всем привет.

Возникла проблема после перезагрузки сервера.
Задание создания бэкапов натыкается на определенную базу и зависает с ошибкой
http://SSMaker.ru/71201b18/

Вопрос: о каком доступе идет речь? Кого, чего, к чему?

Что изменилось в 2016 по сравнению с младшими версиями?

$
0
0
Ситуация
Есть программа которая отлично работает с версиями 2005-2008-2012, но не работает с 2016.
Совет обратиться к разработчикам, увы, не подходит, так как разработчик компания западная,
до общения с конечным пользователем, несмотря на соблюдение лицензирования, не снисходят.

Тест подключения проходит успешно, но при обращении к базе не видит ни одной таблицы.
Соответственно ничего не работает.
Права у аккаунта подключения полные, выше только у Бога.

Какие есть идеи?
Что кардинально изменилось в версии 2016 из-за чего возникли прпоблемы на ровном месте?

подскажите по правам

$
0
0
1. Нужны ли права на чтение сиквенса и как их выдать. Рылся, не нашел
2. Как соббсно проверить, каких прав не хватает? Просто пишет "User does not have permission to perform this action"


ММСКЛ 2017

Как найти год+месяц в ms sql

$
0
0
нужно найти предыдущий месяц в формате 201908 из int -201909
пишу функцию
concat(year(dateadd (month,-1,cast(201909 as varchar(10)) +'01') ) /*находим предыдущий месяц*/
 , month(dateadd (month,-1,cast(201909 as varchar(10)) +'01') ))


но получается в итоге 20198, но если стоит к примеру 201912 то получается как и надо 201911

как тут доработать запрос чтобы получить корректный результат?

kill / cancel query

$
0
0
Приветствую

Подскажите, каким образом можно объяснить, что после нажатия в студии кнопки ssms "cancel executing query",
студия переходит в состояние "cancelling query", но сам процесс остается в активном состоянии.
И даже после отправки kill, переход процесса в состояние Killed/rollback происходит совсем не сразу.
Я говорю даже не про завершение отката, а про начальную реакцию сервера.
Выполнена команда на перестроение индекса, отмена была нажата практически сразу, потом kill несколько раз,
по факту процесс продолжал выделять место в базе с таблицей еще минут 20 и только потом процесс сменил состояние и пошёл откат.
Viewing all 7251 articles
Browse latest View live