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

Could not find server 'xxxxxxxx' in sys.servers при запуске из dtsx пакета

$
0
0
Есть процедура на сервере1. Процедура обращается к таблице, расположенной на сервере2. Линк настроен вроде бы корректно, и
если запустить процедуру с сервера1, она отрабатывает, никаких ошибок нет. А вот из dtsx пакета через обычный execute sql task она начинает ругаться, что сервера2 в sys.servers нет.
Самое смешное, что на этот же сервак ссылается другая процедура в том же пакете, которая, правда, запускается через C# шаг, и отрабатывает без ругани. Переписать данный запуск аналогично на С# можно, но зачем? Никто не сталкивался? Ниже скрин падающего шага.

Вычислить кто сделал kill

$
0
0
Падает джоба с ошибкой:
Executed as user: *******. Unspecified error occurred on SQL Server. Connection may have been terminated by the server. [SQLSTATE HY000] (Error 0) Cannot continue the execution because the session is in the kill state. [SQLSTATE HY000] (Error 596). The step failed.

Смотрю сюда и вычисляю '[host process ID]':
EXEC sys.xp_readerrorlog 0,1,'kill'

Вижу, что килл сделан от имени сервера.

Смотрю дальше:
select login_name,* from sys.dm_exec_sessions where host_process_id = '[host process ID]'

Вижу несколько джобов, шаги которых никак не пересекаются по времени с мои kill-ом.

Как еще точнее вычислить процесс, который делает kill? Extended events или еще есть варианты?

Исключить из выборки записи другой таблицы

$
0
0
Добрый день!
Подскажите, пожалуйста, кто сталкивался..

Есть две таблицы:

t1
id, Номер
7, 244
7, 245
7, 262
7, 249
7, 256
7, 247
.....

t2
id, Диапазон_c, Диапазон_по
7, 245, 246
7, 248, 250
7, 255, 260

Как выбрать все записи t1, которые не попадают в диапазоны t2?
То есть в результате мы должны получить записи:

id, Номер
7, 244
7, 262
7, 247

Вопрос по оператору Compute Scalar для Update запроса

$
0
0
Здравствуйте,

Есть план выполнения update запроса обновляющего ключ не уникального индекса:
use tempdb
go

if object_id('test_upd') > 0
drop table test_upd
create table test_upd(id int identity, id2 int, constraint pk primary key(id))
create index ni_id2 on test_upd(id2)
insert into test_upd (id2) values (1)
go

set showplan_all on
go
update test_upd set id2 = 100
go
set showplan_all off
go


|--Clustered Index Update(OBJECT:([tempdb].[dbo].[test_upd].[pk]), OBJECT:([tempdb].[dbo].[test_upd].[ni_id2]), SET:([tempdb].[dbo].[test_upd].[id2] = [Expr1006]))
       |--Compute Scalar(DEFINE:([Expr1007]=[Expr1007]))
            |--Compute Scalar(DEFINE:([Expr1007]=CASE WHEN [Expr1004] THEN (0) ELSE (1) END))
                 |--Compute Scalar(DEFINE:([Expr1006]=(100)))
                      |--Compute Scalar(DEFINE:([Expr1004]=CASE WHEN [tempdb].[dbo].[test_upd].[id2] = (100) THEN (1) ELSE (0) END))
                           |--Clustered Index Scan(OBJECT:([tempdb].[dbo].[test_upd].[pk]))


Как видно из плана Clustered Index Update использует Expr1006, но не могу понять как он использует значение Expr1007.
Правильно ли я понимаю, что из плана нельзя увидеть того как оператор Clustered Index Update использует значение Expr1007?
Заранее благодарю за ответы.

Как установить правила создания объектов в базе?

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

хочу поставить на базу данных правила, чтобы все таблицы начинались только со слова tbl_, хранимки со слова proc_, функции со слова fnc_. Как бы запилить такие правила?

Спасибо.

Получить доступ к файлам сервера через Microsoft SQL server 2008R2

$
0
0
Подскажите сведующие))
Вопрос в следующем например есть комп "А" с sql сервером на нем где нибудь в Москве, и есть комп "B" с менаджмент студио на нем где нить в Сочи, у сервера "A" есть внешний IP с открытым портом, к которому есть доступ под админом SA.
Можно ли с компьютера "B" получить доступ к файлам на дисках компьютера "A" и каким то образом их скопировать на комп "B" ?

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

Например сделал бэкап, а потом его удаленно скопировал к себе на комп?
Тим виверы\амми\радмины не рассматриваются))

Зависания при отмене проведения и проведении документов (период date/datetime)

$
0
0
Знатоки mssql подскажите
Имею базу 1с 7.7 на ms SQL 2012-11-0-6020 (server 2016 datacenter)
релиз 1С от https://infostart.ru/public/82018/ - Секретный релиз

После переезда с SQL 2005 (server 2008) база встает колом при попытке отмены или проведения документов из любых старых периодов.
После "вскрытия" выяснилось, что при процедурах вычисления следующего периода есть такая строка:
@NewDate=DATEADD(mm, DATEDIFF(mm, '1753-01-01', @BeginOfPeriod), '1753-02-01')

(@BeginOfPeriod - datetime)
которая срабатывает для дат больше 15го числа месяца. Для моего случая имею:

DATEADD(mm, DATEDIFF(mm, '1753-01-01', '2017-09-16T00:00:00'), '1753-02-01')

По логике код должен выдать дату начала следующего периода (у меня разбивка по 15 дней). НО! выдает сен 2 2017 12:00AM, хотя должен выдать 01/10/2017
а вот если сделать так:
DATEADD(mm, DATEDIFF(mm, '1753-01-01', '2017-09-16T00:00:00'), '1753-02-01T00:00:00')
- то норма 01/10/2017

В чем дело то?
п.с.
В хранимых процедурах поправил дату на датавремя, проблема с проведением и отменой проведения решилась

Преобразование данных

$
0
0
При преобразовании данных, возникает ошибка Error converting data type nvarchar to numeric.
Идет преобразование данных типа nvarchar(25) в numeric(18,0).
В таблице, содержатся данные типа nvarchar(25) такого плана: 1202,600-160328M016,Transp.
Я думаю дело именно в Transp, скажите можно как-то решить данную ошибку путем конвертации или только менять тип данных во второй таблице?

запуск скрипта из триггера

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

Столкнулся с необходимостью запускать по триггеру на таблице скрипт на втором сервере.
Идея благородная- пересобрать доккументы когда приходят новые данные, вот только база MS SQL а нужный вебсервер-Nginx PHP.

Одно из решений...
BEGIN
exec master..xp_cmdshell 'c:\progra~1\intern~1\iexplore.exe http://www.somesite.com/compile.php'
END


но вот что то оно меня смущает сильно, хотелось бы какую то более разумную альтернативу, например, не использовать iexplore, учитывая что оба сревера находяться в одной сети.

Поделитесь решениями если таковые есть.

mssql ошибка 9003 при попытке бэкапа

$
0
0
Приветствую!
Есть mssql 2012
Есть большая база 1С, в ней сейчас работают.
Модель восстановления простая.
Сегодня база не сбэкапилась по джобу.
В ручную тоже не бэкапится с ошибкой 9003

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

Обнаружено константное выражение в списке ORDER BY, позиция 1.

$
0
0
При попытке записи элемента спр СоглашениеОбИспользованииЭДО выбивает из системы с ошибкой:

Невосстановимая ошибка
Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm:
по причине:
Ошибка СУБД:
Microsoft SQL Server Native Client 10.0: Обнаружено константное выражение в списке ORDER BY, позиция 1.
HRESULT=80040E14, SQLSrvr: SQLSTATE=42000, state=1, Severity=10, native=408, line=6

Как можно победить?

Произошли ошибки во время выполнения многошаговой операции OLE DB

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

delete from [192.168.1.99].Archive.dbo.RA
where FK_R in 
(select FK_R
	from [192.168.1.99].Archive.dbo.RA as ra
	left join [192.168.1.99].Archive.dbo.R rr on ra.FK_R=rr.pk
	where rr.RegistrNum is not null)


данный запрос на прилинкованном сервере [192.168.1.99], выдает такую ошибку:
Поставщик OLE DB "SQLNCLI10" для связанного сервера "192.168.1.99" вернул сообщение "Произошли ошибки во время выполнения многошаговой операции OLE DB. По возможности, проверьте значения всех состояний OLE DB. Работа не выполнена.".
Сообщение 7202, уровень 11, состояние 2, строка 1
Could not find server 'SQLSERVER2' in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.


Такая ошибка выдается на одном прилинкованном сервере из 30....на других такой ошибки нет...
Помогите, разобраться, пожалуйста...

Выбрать "уникальные" записи

$
0
0
Уважаемые коллеги, помогите составить запрос для выборки "уникальных" записей.
Исходные данные:
with a as (
  select 'A' a, 'B' b
), b as (
  select a, b from a 
  union 
  select b, a from a 
  union 
  select 'A', 'C'
)
select * from b 

в результате селекта необходимо получить набор
a	b
A B
A C
либо
a	b
A C
B A
То есть строки
A, B
и
B, A
считать "одинаковыми", нужно оставить только одну из них, (любую).

Цветовое оформление SQL Server Management Studio 2017.2 2017.3

$
0
0
Вроде есть возможность менять цвета например Tools-Options-Environment-Fonts and Colors.
И например для "Text Editor" все цвета (foreground и background) меняются.

А например для "Grid Results" вроде есть возможность менять и foreground, и background но реально меняется только цвет символов (foreground), а фон таблицы (сетки) остается белым !!!

Странно также почему нельзя (недоступна) замена цветов для "Text Results"....

Какая информация не попадает в sys.dm_exec_query_stats ?

$
0
0
Добрый вечер.

Есть у меня один запрос, который генерирует приложение и выполнялся он ночью около 30 минут.

А в sys.dm_exec_query_stats почему-то его не нашел - хотел план посмотреть.




Скажите, какие зарпосы не попадают в это представление?

Новый индекс - производительность select vs insert

$
0
0
Как известно, при создании нового индекса требуется взвесить производительность чтений vs обновлений. Но что-то я нигде не встречал конкретных подходов собственно как это делать.
Поэтому для примера взял одну таблицу и типичный селект с джойном и поддерживающим этот селект индексом.
Что делает этот индекс - он заменяет скан таблицы на seek.

Таблица небольшая, 150 записей. При наличии индекса, будет следующая статистика:

select  ->>>  Table 'MyTable'. Scan count 2, logical reads 15, physical reads 0...
insert  ->>>  Table 'MyTable'. Scan count 0, logical reads 4, physical reads 0...


Без индекса:

select  ->>>  Table 'MyTable'. Scan count 2, logical reads 18, physical reads 0...
insert  ->>>  Table 'MyTable'. Scan count 0, logical reads 2, physical reads 0...


Т.е. имеем такую ситуацию, что селект потреебляет на 3 логических чтения меньше, а инсерт - на 2 больше. Т.е. выйгрыш от индекса в 1 логическое чтение в целом.
Два вопроса:
- Я правильно понимаю, что когда таблица станет большой, сотни тысяч записей - то разница (из-за скана в селекте) станет куда бОльшей, ведь скан будет всей таблицы, а логические чтения индекса при инсерте возрастут незначительно? С поправкой на количество селектов vs инсертов
- Так-ли надо вообще оценивать полезность индексов?

оставшееся время жизни SSD

$
0
0
Поделитесь опытом: как вы на продакшинах контролируете оставшееся время жизни SSD?

Моя проблема:

SQL 2008, 64, Ent, перевели базы и систему на SSD, теперь думаем когда же они (SSD) умрут?
Поэтому хочется считать TBW с SSD дисков.

Особенность: диски в массиве, большинство тулов из из массива не читают.
Контроллер: Intel Integrated Raid Controller RMS3CC80, BBU

- есть ли возможность вычитать прямо из SQL?
- есть ли тулы, можно платные.

как сделать "один" join если справа много совпадений без select?

$
0
0
День добрый!
Допустим в левой табличке у меня 3 значения по которым я джойню к ней правую. Если в правой больше одного совпадения значения, то итоговая увеличивает кол-во строк на кол-во совпадений. Подскажите можно ли как-нибуть итого избежать более изящным способом, чем:
select t1.fld1, (select top 1 fld2 from t2 where t1.fld3=t2.fld3) zzz from t1

т.е. сджойнить с одним/любым значением во второй таблице....

LIKE

$
0
0
Hello world!
В ASCII символ 'A' имеет код 65, символ 'z' - код 122. В диапазоне между ними находится символ '\' с кодом 92
declare @t1 as varchar(100)
set @t1 = '\' 

SELECT CAST(@t1 AS binary) AS Hex,
      CASE WHEN @t1 like '%[A-z]%'  
	    THEN N'Да, в ДИАПАЗОНЕ'
	    ELSE N'Нет, не в ДИАПАЗОНЕ'
      END AS [ASCII A-z]


Подскажите, почему like его не находит?

Как определить кто виноват в чтении базы на скорости 2ГБ/сек?

$
0
0
Всем привет!
Немного нетипичная ситуация, прошу помощи. Есть сервер SQL 2012R2.
Сегодня на нем появилось ДИКОЕ чтение одной базы.
В ней живут примерно 400-450 человек.
При обычном режиме чтения/записи: 10/15 МБ/сек, сегодня периодические пики по чтению по нескольку минут до 1,5-2 ГБ/сек

Можно ли каким-то инструментом понять какие запросы или что-то еще дают такую нагрузку по чтению?
Viewing all 7251 articles
Browse latest View live