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

Проблема с настройкой resource governor в MS SQL 2017

$
0
0
Исходное обсуждение: https://www.sql.ru/forum/1316231/ssis-neponyatnaya-oshibka-svyazi-s-ms-sql-cherez-ole-db-konnektor
По непонятной причине resource governor иногда ломается и обрывает подключения:

2019-08-28 15:19:00.38 spid151 Process ID 153 was killed by hostname SERVERNAME, host process ID 6252.
2019-08-28 15:19:00.38 spid153 Ошибка: 10982, серьезность: 16, состояние: 1.
2019-08-28 15:19:00.38 spid153 Failed to run resource governor classifier user-defined function 'dbo.RGGroup'. Last error 3602, state 135. See previous errors in SQL Server error log from session ID 153 for details. Classifier elapsed time: 0 ms.
Происходит это с интервалом пару раз в сутки, возможно в периоды высокой нагрузки.
Настройки RG ниже:
Функция:
CREATE FUNCTION [dbo].[RGGroup]()
RETURNS SYSNAME
WITH SCHEMABINDING
AS
BEGIN
DECLARE @WorkloadGroup AS SYSNAME
SELECT TOP 1
       @WorkloadGroup = 
	  CASE
                            WHEN IS_SRVROLEMEMBER ('rgAdminUsers') = 1
                                THEN 'PoolAdminUsersGroup'
                            WHEN IS_SRVROLEMEMBER ('rgDWHUsers') = 1
                                THEN 'PoolDWHUsersGroup'
                            WHEN IS_SRVROLEMEMBER ('rgDNSUsers') = 1
                                THEN 'PoolDNSUsersGroup'
                            ELSE 'default'
                        END;

RETURN @WorkloadGroup
END

Пулы:
CREATE RESOURCE POOL PoolDNSUsers 
WITH (  
     MIN_CPU_PERCENT = 0,  
     MAX_CPU_PERCENT = 20,  
     CAP_CPU_PERCENT = 20,       
     MIN_MEMORY_PERCENT = 0,  
     MAX_MEMORY_PERCENT = 20  
      );  

CREATE RESOURCE POOL PoolDWHUsers 
WITH (  
     MIN_CPU_PERCENT = 0,  
     MAX_CPU_PERCENT = 90,  
     MIN_MEMORY_PERCENT = 0,  
     MAX_MEMORY_PERCENT = 90  
      );  
	 
CREATE RESOURCE POOL PoolAdminUsers 
WITH (  
     MIN_CPU_PERCENT = 0,  
     MAX_CPU_PERCENT = 100,        
     MIN_MEMORY_PERCENT = 0,  
     MAX_MEMORY_PERCENT = 100  
      );  

USE [master]
GO

/******  ******/
CREATE WORKLOAD GROUP [PoolDNSUsersGroup] WITH(group_max_requests=0, 
		importance=Medium, 
		request_max_cpu_time_sec=0, 
		request_max_memory_grant_percent=25, 
		request_memory_grant_timeout_sec=0, 
		max_dop=0) USING [PoolDNSUsers], EXTERNAL [default]
GO

/******  ******/
CREATE WORKLOAD GROUP [PoolDWHUsersGroup] WITH(group_max_requests=0, 
		importance=Medium, 
		request_max_cpu_time_sec=0, 
		request_max_memory_grant_percent=40, 
		request_memory_grant_timeout_sec=0, 
		max_dop=0) USING [PoolDWHUsers], EXTERNAL [default]
GO
/******  ******/
CREATE WORKLOAD GROUP [PoolAdminUsersGroup] WITH(group_max_requests=0, 
		importance=Medium, 
		request_max_cpu_time_sec=0, 
		request_max_memory_grant_percent=100, 
		request_memory_grant_timeout_sec=0, 
		max_dop=0) USING [PoolAdminUsers], EXTERNAL [default]
GO


Итоговый:
USE [master]
GO

ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = [dbo].[RGGroup]);
GO

ALTER RESOURCE GOVERNOR WITH (MAX_OUTSTANDING_IO_PER_VOLUME = DEFAULT);
GO

ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

Учётка, для которой подключение иногда обрывается, попадает в группу PoolAdminUsersGroup.
Когда отключаю GOVERNOR - всё прекрасно работает.

В чём может быть проблема?

Как ускорить перенос данных из одной БД в другую?

$
0
0
Есть задача: перенести некую таблицу из одной БД в другую.

На тестовом прогоне запрос
Insert Into База1.Таблица1 ([куча полей])
select [куча полей] from База2.Таблица1

сделал все, как полагается, но это заняло достаточно много времени.

Знаю про существование BULK INSERT, который имеет бОльшую скорость работы за счет того, что операция вставки не логируется. Но этот оператор, если я правильно понимаю, работает только с файлом на входе.

Внимание вопрос:
Есть ли способ ускорить необходимый мне перенос данных за счет отключения логирования (или конструкция Insert Into уже является нелогируемой операцией и быстрее ничего не сделаешь?)

Поскольку в База1 Таблица1 пустая, я её могу даже грохнуть и сделать
select [куча полей] into База1.Таблица1 from База2.Таблица1 

а потом создать нужный индекс.
Будет ли это быстрее?

STRING_SPLIT - присвоить алиас правильно

$
0
0
Есть простая конструкция (схематично):

SELECT id
FROM table
CROSS APPLY STRING_SPLIT(@param1, ',')
CROSS APPLY STRING_SPLIT(@param2, ',')
WHERE ...


Само собой, использовать такое невозможно - оба STRING_SPLIT производят одноколоночный rowset, причём поле в обоих имеет имя value, и фиг сошлёшься, ибо нет алиаса таблицы. Та же проблема, если вместо CROSS APPLY использовать любой JOIN.

Вроде чего проще - дай алиас, типа

CROSS APPLY STRING_SPLIT(@param1, ',') AS param1(value)


Ан нет - немедленно получаешь сообщение, что функция STRING_SPLIT не определена.

Понятно, что задача элементарно решается какой-нибудь конструкцией типа

SELECT id
FROM table
CROSS APPLY (SELECT value FROM STRING_SPLIT(@param1, ',')) AS param1(value)
CROSS APPLY (SELECT value FROM STRING_SPLIT(@param2, ',')) AS param2(value)
WHERE ...


или то же в CTE - но как бы "на глаз" явно избыточный подзапрос.

Вопрос: можно ли заалиасить без подзапроса? если да - как именно?

Как составить следующий запрос?

$
0
0
В таблице NotWork хранится номер больничного листа (n_nwds), количество дней листа (days), номер больничного листа продолжением которого является этот лист (n_nwds_main_pe).

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

Больничный может быть без продолжения, а может образовываться длинная цепочка из больничных.

С помощью курсоров очень долго считает.

Взаимоблокировки - помогите начинающему

$
0
0
День добрый!
Сразу скажу - это мой первый опыт решения проблем с взаимоблокировками... глаза разбегаются в разные стороны :) Прошу снисходительности!

Ситуация выглядит так:
Клиентское приложение (MS ACCESS 2010) запускает на выполнение хранимую процедуру на MS SQL Server 2008 R2

В этой процедуре делается следующее:
delete from dbo._tmp where Пользователь = suser_sname() ;
-- тут куча инструкций которые динамически формируют строку запроса в переменную @SQL
-- сама строка @SQL представляет из себя инструкцию INSERT INTO _tmp(Пользователь, Ключ) SELECT suser_sname(), Ключ FROM Данные
exec(@SQL);

Затем клиентское приложение читает представление в MS SQL.
Строка запроса представления примерно такая: select * from Данные inner join Данные.Ключ = _tmp.Ключ where Пользователь = suser_sname()

Суть всего процесса следующая:
В ACCESS надо передать данные, что бы они там динамически изменялись. Но для каждого запрашивающего пользователя существуют различные ограничения на просмотр тех или иных строк данных. Поэтому предварительно запускается хранимая процедура, которая формирует временную таблицу с ключами записей, которые доступны пользователю. Эта времменная таблица задействована в представлении, которое и читает клиент с условием Пользователь = suser_sname()

Наверняка решение кому-то сильно не понравится. Другого пока не могу придумать в связке с MS ACCESS
Понятное дело, что пользователей много. Часто возникают взаимоблокировки запросов, потому что пользователи уверенно пытаются прочитать и записать данные как во временную таблицу так и в таблицу с данными.

Сам вопрос:
Посоветуйте какие ключи и опции лучше использовать в инструкциях DELETE и INSERT данной ситуации, что бы избежать или минимизировать взаимоблокировки.
Суда по всему блокируются инструкции DELETE и INSERT когда другие пользователи читают представление, основанное на таблице _tmp

Спасибо!

оператор like

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

Имеется столбец (varchar) c определенным набором данных, где могут быть, как числовые так и текстовые значения, к примеру (5, 10, abc, ddd!, 50). Мне необходимо извлечь из этого поля абсолютно все значения, кроме диапазона чисел 1-10(где может быть только число без посторонних символов).
Конструкция like '%[^0-9]%' предоставляет такую возможность, в выборку попадают все нужные значения, кроме чисел, как '20' '19' и так далее, которые не имеют никаких посторонних символов
Подскажите каким образом написать условие, чтобы в выборку также попадали все числа начинающиеся от 11,12,13...n

вопрос по организации polybase на ms sql server

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

Подскажите, пож-та, кто-нибудь реально сталкивался с организацией polybase для доступ к hadoop?

Хотелось бы практические рекомендации с чего начать и на что обратить внимание.

К сожалению Extended Events не получается использовать вместо профайлера

$
0
0
Здравствуйте, друзья.
К сожалению Extended Events не получается использовать вместо профайлера.
Не могу получить текст вызова процедуры с параметрами. Чего я только не пробовал.
Читал, что его можно получить из поля statement для вызова процедуры.
Но оно, как это ни странно, то заполнено, то нет. Обычно пустое. От чего это зависит - не знаю.
Action sqlserver.sql_text - всегда пустое значение.
Поле Batch_text для соответствующих событий тоже всегда пусто.
Использование sqlserver.tsql_frame,sqlserver.tsql_stack - ничего не дало.

Версия Microsoft SQL Server 2012 (SP4-GDR). Видимо Extended Events для этой версии еще недостаточно хорошо доработаны.
Или может быть все-таки есть какой-то воркараунд?

SQL Management Studio вылетает

$
0
0
В SQL Management Studio 18 создала бд, но при нажатии кнопки New Query приложение подвисло, закрылось и начало заново открываться. Не могу понять с чем это связано. Никакой ошибки не выдает.
Пробовала переустанавливать программу, устанавливала другую версию - ничего не поменялось.
Сдудия сама 18 , а Сервер 17, так что тут не должно быть проблемы.

Как узнать размер таблицы в базе?

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

Ни разу не DB админ. 1Сник попросил узнать размер строки "_AccumRgOpt27063" Подскажите, можно ли узнать размер? У нас MSSQL 2016.

Скинуть логин

$
0
0
Доброго времени суток

1. Есть процедура которая обновляет данные в таблицах
2. Есть пользователь под логином (ttt) который работает с таблицами через MS access
3. Сервер Microsoft SQL Server 2008 (SP4) - 10.0.6241.0 (X64) Apr 17 2015 10:56:08 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (VM)

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

Помогите пожалуйста с таким запросом

Подскажите как исправить sqlsrv_prepare, чтобы запись в таблицу была не в цикле.

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

Есть примерно такой INSERT :
$tsql = "INSERT INTO [table]
      (
         [data1],
        [data2]
      )  
      VALUES   
      (?, ?)";  
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC ) ) 
{
      $tparams = [
          $row['tdata1'],
          $row['tdata2']->format( 'Y-d-m H:i:s' )
     ];

    $tstmt = sqlsrv_prepare($conn, $tsql, $tparams);
    sqlsrv_execute($tstmt); 
    sqlsrv_free_stmt($tstmt);  
}


В этом примере запись идет в цикле.
Можно ли как то сделать присваивание параметров в цикле, а sqlsrv_execute вне цикла.

Например в mysql это выглядело бы так:
$tsql = "INSERT INTO `table`
      (
         `data1`,
        `data2`
      )  
      VALUES   
      (?, ?)";  

$stmt = $mysqli->prepare($tsql)

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC ) ) 
{
        $tparams = [
            $row['tdata1'],
            $row['tdata2']->format( 'Y-d-m H:i:s' )
        ];

       $stmt->bind_param("ss",  $tparams);
}
 
$stmt->execute();

То есть, чтобы был только один sql запрос.

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

$
0
0
Доброе утро.

Пытался сделать так:


CREATE LOGIN [readonly_user] WITH PASSWORD='passWord', DEFAULT_DATABASE=[PROD_DB], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO

USE [PROD_DB]
GO
CREATE USER [readonly_user] FOR LOGIN [readonly_user]
GO

GRANT SELECT ON report_table TO [readonly_user]

Методы защиты данных от программистов

$
0
0
Драсте, поделитесь опытом, кто какие методы использует для защиты данных от программистов? То есть, хлопчина имеет доступ ко всем таблицам и данным. Как можно его ограничить?
ПС
давай те пропустим стадию "набирайте нормальных программистов"

SSIS как в пакете запихнуть имя сервера в параметр для использования в подключениях

$
0
0
Собственно ситуация:
есть 2 сервера условно 01 и 02 в зависимости от доступности необходимо выгружать данные или с 01 или с 02.
Идея в том чтобы проверять сначала 01 сервер если доступен пихать его имя в параметр и в подключениях дальше использовать его имя, если он недоступен то берем 02.

Циклы внутри запроса селект?

$
0
0
id cash time Code

1 300 10.14.00 1
2 -450 10.16.00 2
3 100 10.21.00 1
4 200 10.22.00 1
5 555 10.26.00 1
6 -848 10.30.00 2
7 80 10.32.00 1
8 400 10.36.00 1
9 368 10.38.00 1
10 200 10.39.00 1

В упрощенном виде задача следующая: надо выбрать из такой таблицы только те операции с кодом 2, если за ними в течении 10 минут не было операций с кодом 1, с общей суммой нарастающим итогом равной по модулю сумме операции с кодом 2. То есть в данном случае запрос должен выдать только операцию с id=2, т.к. в последующие 10 минут нет такой последовательности операций с кодом 1, общая сумма которых равна сумме этой операции. А вот операцию с id=6 надо отбросить, т.к. сумма первых трех операций после нее с кодом 1 (id=7, 8, 9) точно равна сумме этой операции по модулю (80+400+368=848). Важный момент - в 10-минутном интервале могут быть еще операции с кодом 1 (в данном кейсе – это id=10), но их уже в расчет брать не надо, если сумма предыдущих операций нарастающим итогом оказалась равна искомой операции. Время операций фиксируется с точностью до одной минуты.
Пытался решить эту задачу через запрос с условием NOT EXISTS, в котором в цикле WHILE подсчитывал сумму операций нарастающим итогом (с выходом из цикла по BREAK при равенстве суммы, или по окончании 10 минутного интервала), но оказалось, что внутри SELECT циклы не работают.
Подскажите пожалуйста, какую еще конструкцию можно использовать для решения такой задачи?

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

$
0
0
Всем привет. Особо в sql не шарю по этому думаю у меня мелочная проблема из-за чего не получается подключится.
У нас на канторе стоит windows server 2014 (на Azure) на нем развернут sql server express. Там имеется база на которую подключается через клиентские компы 1с. Но кроме 1с нам нужно что бы туда подключался на клиентской машине Sql Manag. Studio, при вводе имени сервера, логина и пароля через клиентскую машину не заходит, на самом серве все супер.

1433 порт открыл, пробовал отключать браундмауэр, службу sqlserver перезапускал, все что в инете нашел пробовал пока безрезультатно.

Вопрос такой, что мне нужно сделать что бы к базе могли подключится через SQL Man. Stud. ?

Запись по каким логином внесли данные

$
0
0
Всем доброго времени суток,

Доступ в базу данных осуществляется через ввода логина и пароля, и пользователь вводит данные в основную таблицу main через форму add.
Как сделать так чтобы в таблицу main хранились логины (в поле login) пользователей которые внесли записи. Логин и пароли хранятся в таблице tblUser


ссылка на файл - https://drive.google.com/open?id=16yCZ2ON0PB_xZcgVzyaPc7zq3MW9HMRu
Вход
логин: 111
пароль:123

Login failed как найти откуда.

$
0
0
Добрый день.
Сервер (издатель + распространитель)
В логах ошибки каждую минуту

2019-09-08 19:06:50.30 Logon Login failed for user 'домен\логин$'. Reason: Could not find a login matching the name provided. [CLIENT: <local machine>]
2019-09-08 19:07:50.33 Logon Error: 18456, Severity: 14, State: 5.
2019-09-08 19:07:50.33 Logon Login failed for user 'домен\логин$'. Reason: Could not find a login matching the name provided. [CLIENT: <local machine>]
2019-09-08 19:08:50.37 Logon Error: 18456, Severity: 14, State: 5.

Проверил все джобы, в профайлере нет записей логона
логин совпадает с именем сервера.

Nick Caserio clarifies what Corridor of Fame inductee Rodney Harrison supposed in the dire

$
0
0
At present, the Refreshing England PatriotsCorridor of Fame will welcome its 2 hottest contributors. Just one is the late Leon Grey, who performed offensive handle for the personnel in just the 70s and was portion of some of the suitable strains in just NFL record. He will be part of the Corridor as a senior member. The ground breaking-technology inductee, in the meantime, is 2-period Tremendous Bowl profitable security Rodney Harrison. The two adult men will be honored at a rite afterwards nowadays.With the party upon the horizon, Patriots director of participant workforce Nick Caserio applied the opening opinions of his push convention upon Saturday towards discuss more than Harrison ot towards shortchange Leon Grey, however Leon was actively playing ahead of I was even bornand reveal what he supposed either in direction of the business enterprise as a comprehensive and himself individually. Caserio responses mirror only how very well-reputable Harrison was through his tenure inside of Refreshing England.odney, I would say, still left an influence upon me individually once I was a more youthful educate, a youthful individual inside this software package. Here a participant that experienced been in just the league having said that a lot of several years and he arrived right here https://www.patriotsgearstoreonline.com/Alan_Branch_Jersey-5,claimed Caserio concerning the previously-46-calendar year-aged who linked the Patriots as a no cost organization signing within 2003. At that period, Caserio was inside his 3rd calendar year with the workers and performing in just his initial year as an local scout.he issue regarding Rodney is this person relished toward prepare. Oneself adult males attain in the direction of perspective what goes upon upon Sundays, how they participate in, their efficiency, yet what this gentleman did upon a working day-towards-working day foundation within just words and phrases of coach, inside of text of his planning, that why he was Terrific,ongoing Caserio. e comprehend he was challenging as hell and he performed that effectively and he performed towards his character Nate Ebner Jersey, and he a immediately shooter and he tells the fact which he does inside his present-day activity https://www.patriotsgearstoreonline.com/Danny_Shelton_Jersey-42. Patriots 2019 Corridor of Fame induction Photograph via Elsa/Getty Illustrations or photos Rodney Harrison Ted Karras Jersey, Leon Grey in the direction of be inducted into Patriots Corridor of Fame todayWhat Leon Grey supposed towards the Patriots of the 1970s5 causes why Rodney Harrison is the Patriotsmost recent Corridor of FamerBecause of his mixture of longevity and organic and natural management techniques, Harrison was voted a employees captain inside each and every of his 6 seasons inside of Refreshing England. Getting the honor towards his teammates against as early upon as his initial yr with his refreshing club is exemplary for how the earlier San Diego Chargers security out of the blue tailored toward daily life with the franchise and the therefore-named atriot Direction:Harrison instantly turned an psychological chief for the workers.hen we shift out toward coach, by yourself adult males look at we do the function with a single a further, directly? We contain a crimson staff members doing the job upon kickoff or kickoff return and Rodney would kick upon a kickoff the scout staff members kickoff personnel and bust his hump becoming down the business,ongoing Caserio the moment conversing concerning Harrison affect and way of thinking even as a coach participant. hat fashion of work, that design of way of thinking, that design and style of frame of mind permeates your soccer staff members anytime by yourself perspective a person which includes that.t remaining an effect upon me,Caserio ongoing. experienced been right here for a pair of several years and on your own check out someone such as that, and what it suggests is Pretty that it reveals oneself that your undertaking and your accountability When youe listed here is towards do no matter what on your own can toward aid the employees in just whichever skill that is. Youe chatting with regards to a Corridor of Fame participant and he shifting down upon kickoff insurance creating it challenging upon our kickoff return personnel inside of purchase in the direction of plan them for the activity inside entrance of them.s 1 of the greatest actual physical avid gamers of his generation 1 that was voted as the dirtiest within just the NFL upon many instances Harrison exemplified the blue-collar staff the early 2000s Patriots aimed towards be Rob Ninkovich Jersey. As these, he aided produce a basis that even now lies at the backside of the franchise: within just their essence, the slogans Do Your Joband o Times Offday back again in the direction of that year in just Patriots heritage; 1 all through which Harrison was a single of the greatest outstanding and substantial participants of the personnel.ee experienced a great deal of perfect gamers in excess of right here who enjoy towards teach,excess Caserio. signify, [Tom] Brady enjoys in the direction of teach, [Tedy] Bruschi enjoyed in the direction of train, [Mike] Vrabel, Harrison, Patrick Chung individuals adult men take pleasure in in the direction of coach and in the direction of be identified the route Rodney is, it rather properly-deserved and it surely remaining an effects upon me individually.
Viewing all 7251 articles
Browse latest View live