Администраторы базы данных

Вопросы и ответы для специалистов по базам данных, которые хотят улучшить свои навыки работы с базами данных и учиться у других в сообществе

4
Переполнение столбца идентичности: когда это необходимо?
Во время одного из последних уроков в университете (я студент), лектор попросил нас разработать базу данных (MySQL Server, если это имеет значение) и крошечное клиентское приложение, которое будет использовать базу данных в качестве источника данных. Одним из требований было то, что столбец идентификаторов (который является PK в каждой таблице) должен …

2
Почему запрос DELETE выполняется в одном формате намного дольше, чем в другом?
У меня есть определенный код очистки, который пытается удалить некоторые дубликаты. Это отлично работает на многих сайтах клиентов. Журналы говорят мне, что этот запрос потребляет от 1 до 45 секунд: DELETE FROM [tbl] WHERE [Id] NOT IN ( SELECT MIN([Id]) FROM [tbl] GROUP BY [IdProject], [IdRepresentative], [TimeStart] ) Но у …

1
Почему агрегат окна пакетного режима дает арифметическое переполнение?
Следующий запрос выполняет оконное SUMотображение над таблицей columnstore 1500 total rows, каждый из которых имеет значение 0 или 1, и переполняет INTтип данных. Почему это происходит? SELECT a, p, s, v, m, n, SUM(CASE WHEN n IS NULL THEN 0 ELSE 1 END) OVER (PARTITION BY s, v, a ORDER …

2
Почему я получаю неявное преобразование Int / Smallint в Varchar, и это действительно влияет на оценки кардинальности?
Я пытаюсь решить проблему с медленным выполнением запроса, используя Show Plan Analysis (SSMS) для фактического плана выполнения. Инструмент «Анализ» указывает, что оценки количества строк не совпадают с возвращенными результатами в нескольких местах плана, а также дает некоторые неявные предупреждения о преобразовании. Я не понимаю этих неявных преобразований типа int в …

1
Выбор * из просмотра занимает 4 минуты
Я сталкиваюсь с проблемой, когда выполнение запроса к представлению занимает более 4 минут. Тем не менее, когда я запускаю запрос, он завершается примерно через 1 секунду. Единственное, в чем я не уверен - это то, что соединяемые таблицы - это временные таблицы. Специальный план запроса: https://www.brentozar.com/pastetheplan/?id=BykohB2p4 Посмотреть план запроса: https://www.brentozar.com/pastetheplan/?id=SkIfTHh6E …
11 sql-server 

1
Перечислите страницы ROW_OVERFLOW_DATA для конкретной таблицы
Я пытаюсь получить список страниц для таблицы, в которой есть строки с ROW_OVERFLOW_DATA. Я могу получить список выделенных страниц из недокументированного DMV, sys.db_db_database_page_allocationsоднако, похоже, что в выходных данных этого DMV нет страниц ROW_OVERFLOW_DATA. Есть ли другой DMV, который я просто не могу найти? Минимальный, полный и (надеюсь!) Проверяемый пример: USE …

2
MAXDOP = 1, подсказки к запросу и порог стоимости для параллелизма
Если для экземпляра MAXDOPзадано значение 1, а подсказки запросов используются для параллельного выполнения определенных запросов, является ли значение порога стоимости для параллелизма все еще используемым SQL для принятия решения о том, следует ли на самом деле идти параллельно? Я не смог получить эту конкретную информацию, хотя эта ссылка предполагает, что …

1
N'Șc 'считал дубликат ключа N'C', используя сопоставление Latin1_General_CI_AS
У меня есть таблица с уникальным ключом, который включает NVARCHAR(50)столбец (правильно или нет, но есть). Таким образом, при попытке вставить Șcили C(не имеет значения порядок вставки) он прерывается на 2-й вставке из-за проблем с сопоставлением. Вот ошибка: (Затронуты 1 строка) Сообщение 2601, уровень 14, состояние 1, строка 16 Невозможно вставить …

1
Почему NOLOCK делает сканирование с назначением переменной медленнее?
Я борюсь против NOLOCK в моей нынешней обстановке. Один аргумент, который я услышал, заключается в том, что накладные расходы на блокировку замедляют запрос. Итак, я разработал тест, чтобы увидеть, насколько эти затраты могут быть. Я обнаружил, что NOLOCK на самом деле замедляет сканирование. Сначала я был в восторге, но теперь …

2
Когда база данных SQL Server готова к приему запросов?
В файле журнала ошибок SQL Server я нашел следующие строки: 2018-02-22 14:10:58.95 spid17s Starting up database 'msdb'. 2018-02-22 14:10:58.95 spid16s Starting up database 'ReportServer'. 2018-02-22 14:10:58.95 spid18s Starting up database 'ReportServerTempDB'. 2018-02-22 14:10:58.95 spid19s Starting up database 'XYZ'. Если до этого времени я проверяю состояние базы данных XYZ, она ONLINEиспользует …

3
Насколько опасно предоставление разрешения ALTER TABLE?
Представьте себе следующий сценарий CREATE DATABASE test GO USE test; CREATE TABLE dbo.Customer ( CustomerId INT, Email VARCHAR(100), SensitiveData VARCHAR(20) ); INSERT INTO dbo.Customer VALUES (1,'abc@foo.com','12346789'); В какой-то момент записывается процесс ETL, который выполняет некоторые действия в testбазе данных. CREATE USER etlUser WITHOUT LOGIN; /*For demo purposes*/ CREATE TABLE dbo.StagingTable …

2
Та же функция в предложении SELECT и WHERE
Вопрос новичка: У меня есть дорогая функция f(x, y)на двух столбцах х и у в моей таблице базы данных. Я хочу выполнить запрос, который дает мне результат функции в виде столбца и накладывает на него ограничение, что-то вроде SELECT *, f(x, y) AS func FROM table_name WHERE func < 10; …

5
Как иметь более 100 записей в выписке case в качестве переменной
Я написал оператор case с> 100 вариантами, где я использую один и тот же оператор в 4 местах в простом запросе. Один и тот же запрос дважды с объединением между ними, но также выполняет подсчет, и поэтому в группе также содержится оператор case. Это делается для того, чтобы переименовать некоторые …

1
Какая функция заключает в кавычки идентификатор в динамическом sql с SQL Server?
Что такое метод безопасного цитирования идентификаторов SQL Server для динамического создания SQL? MySQL имеет quote_identifier PostgreSQL имеет quote_ident Как мне обеспечить заданное динамически генерируемое имя столбца для динамически генерируемого утверждения, что сам столбец не является атакой с SQL-инъекцией. Допустим, у меня есть оператор SQL, SELECT [$col] FROM table; который по …

1
bcp command Неверный синтаксис рядом с ' '. Характер на самом деле: «ä»
У меня есть mssql-сервер и mssql-инструменты, установленные в Ubuntu (Linux). Когда я пытаюсь экспортировать данные с помощью команды bcp, используя следующую командную строку: bcp DBname.dbo.Täble_Name out Täble_Name -c -k -S127.0.0.1 -Usa -PpassWord -r ~ Я получаю эту ошибку: SQLState = 37000, NativeError = 102 Ошибка = [Microsoft] [Драйвер ODBC 13 …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.