SQL Server в вопросах и ответах


Оглавление (нажмите, чтобы открыть):

SQL Server в вопросах и ответах

Карен Уоттерсон независимый журналист, редактор и консультант по клиент-серверным системам и хранилищам данных. Ей можно написать по адресу .
Брайан Моран президент группы пользователей и директор по технологиям СУБД Spectrum Technology Group. Имеет сертификаты MCSE, MCSD и MCT. Ему можно написать по адресу .

В: Я установил SQL Server 7.0, но когда я запускаю Enterprise Manager, я не вижу баз данных master, model и msdb. Кроме того, я не вижу системных таблиц в пользовательских базах данных. В чем причина?

О: Вы указали SQL Server не отображать системные объекты. Щелкните правой клавишей мыши на имени сервера в Enterprise Manager и выберите Edit SQL Server Registration Properties. Поставьте метку в окошке напротив надписи Show system databases and objects.

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

В: Из-за особенности типа datetime в SQL Server 6.5 затруднены арифметические действия над датами и их форматирование. Почему в SQL 7.0 Microsoft не устранила этот недостаток и не добавила функции вроде LAST_DAY (последний день месяца) и NEXT_DAY (следующий день недели)?

О: Мы согласны, что работать с типом datetime трудно. В частности, в SQL Server для выполнения простых арифметических действий над датами (например, для прибавления к заданной дате нескольких дней), приходится пользоваться функцией DATEPART(). Однако при внесении изменений в основные типы данных могут возникнуть серьезные проблемы с обратной совместимостью. В SQL Server 7.0 операции с датами стало осуществлять несколько легче. В качестве примера приведем следующий SQL-код: DECLARE @datevalue datetime SELECT @datevalue = «1/1/99» PRINT «Добавим 5 суток» SELECT @datevalue + 5 PRINT «Теперь добавим 5.25 суток (или 5 суток 6 часов)» SELECT @datevalue + 5.25 Его выполнение на SQL Server 7.0 приводит к следующим результатам: z Добавим 5 суток 1999-01-06 00:00:00.000 Теперь добавим 5,25 суток (или 5 суток 6 часов) 1999-01-06 06:00:00:00.000

Настройка SQL для сетевой работы

При установке/переустановке SQL сервера требуется настройка для сетевой работы, для этого:

1. Сетевая конфигурация SQL Server -> Протоколы для SQLEXPRESS далее двойным щелчком мыши откройте TCP/IP.

2. На вкладке Протокол измените Включено на Да

3. На вкладке IP-адреса для каждого ip-адреса из списка установите:

  • IP-адрес: — НЕ изменяйте значение
  • TCP-порт: 1433
  • Активен: Да
  • Включено: Да
  • Динамические TCP-порты: оставить пустым (ноль стереть)

4. Для последнего значения из списка IPAll установите:

  • TCP-порт: 1433
  • Динамические TCP-порты: оставить пустым (ноль стереть)

И нажмите ОК

5. Перезапустите Службу SQL Server

Перейдите в раздел Службы SQL Server -> Sql Server (SQLEXPRESS)- правой кнопкой мыши> Перезапустить.

Да пребудет с Нами Знание!

Программирование, самосовершенствование, физическое и духовное развитие, интересные мысли, цитаты

воскресенье, 9 сентября 2012 г.

Тестовые SQL-задачи от работодателя

CREATE TABLE dbo . call
(
id INT IDENTITY PRIMARY KEY CLUSTERED ,
subscriber_name VARCHAR ( 64 ) NOT NULL ,
event_date DATETIME NOT NULL ,
subtype VARCHAR ( 32 ) NOT NULL ,
type VARCHAR ( 128 ) NOT NULL ,
event_cnt INT NOT NULL
)

SELECT *
FROM dbo . call
WHERE subscriber_name = @a
AND event_date > @b
AND subtype = @c

CREATE partition FUNCTION pf_monthly ( datetime ) AS range RIGHT FOR VALUES (
‘20120201’ , ‘20120301’ , ‘20120401’ , ‘20120501’ , ‘20120601’ , ‘20120701’ ,
‘20120801’ , ‘20120901’ , ‘20121001’ , ‘20121101’ , ‘20121201’ )

CREATE partition scheme ps_monthly AS partition pf_monthly ALL TO ( [primary] )

CREATE TABLE dbo . order_detail
(
order_id INT NOT NULL ,
product_id INT NOT NULL ,
customer_id INT NOT NULL ,
purchase_date DATETIME NOT NULL ,
amount MONEY NOT NULL
)
ON ps_monthly ( purchase_date )

CREATE CLUSTERED INDEX ix_purchase_date
ON dbo . order_detail ( purchase_date )

sql-server

Мне нужно сделать копию модуля сокета, чтобы иметь возможность использовать его и иметь еще один модуль сокета, исправленный обезьяной, и…

Мой коллега задал мне вопрос сегодня «У меня есть скрипт SQL, содержащий 4 запроса select. Я использовал его ежедневно на…

Я использую мастер преобразования проекта служб SQL Server Integration Services и продолжаю работать со следующей ошибкой: «Произошла ошибка при получении…

В настоящее время мы используем TFS 2010 для наших приложений VS и нашего кода SQL. Для SQL мы храним каждую…

Я подключаю sql Server 2008 r2 на cakephp. Мне нужно вытащить excel, для которого я создал хранимую процедуру, как показано…

С помощью javaScript или jquery мне нужно изменить переключатель, каждый раз, когда клиент нажимает на изображение, событие вызывает функцию Java…

Привет, я пытаюсь добавить внешний ключ к одному из моих классов моделей. По какой-то причине этот ключ, в частности, вызывает…

Я пытаюсь подключиться к моему имени локальной машины как «имя сервера», и давая проверку подлинности windows, но его бросая некоторую…

Используя java и SQL Server 2008, мне нужно сравнить содержимое двух таблиц, дело в том, что они находятся на разных…

Поэтому я ищу, чтобы добавить itemlookupcodeк результатам запроса. Он itemlookupcodeнаходится в таблице item, но запрос относится к другой таблице. Обе…

Таким образом, я получаю имя таблицы/представления или SQL-запрос в качестве входных данных, и мне нужно применить WHEREк нему фильтрацию. Так…

У меня есть база данных с большим количеством записей, и каждая запись имеет datetime и размер файла (в байтах), захваченные…

У меня есть datagridview, который создается путем различных действий и манипуляции данных пользователя. Я хочу вставить все данные gridview в…


У меня есть этот SP, чтобы проверить, имеет ли пользователь какие-либо лицензии, которые хранятся в разных таблицах.. Я получаю результаты…

Я работаю над mysql (wampserver) и сделал простую базу данных. я пишу статью о нулях в базах данных и о…

Может ли кто-нибудь сказать мне роль симметричного ключа в SSIS ? SQl Server версии 2012. Мы развертываем пакет и сталкиваемся…

Я пытаюсь определить, какой тип данных следует использовать в определенном столбце, так как я сталкиваюсь с ошибкой каждый раз, когда…

Таблицы BOOK (ISBN, Author_ID, Author_Name, Title, No_Of_Copies) STUDENT (Student_ID, Имя, Адрес, Курс) LOAN (Student_ID, ISBN, Due_Date) Напишите инструкцию SQL для…

Я довольно новичок в SQL server и учусь, как я иду так жаль, если ответ очевиден, или я просто подхожу…

Почему таблица Roomне принимает внешний ключ? CREATE TABLE RoomType ( Roomtype nvarchar(2) NOT NULL, Description nvarchar(20), Responsibility nvarchar(20), primary key…

Я установил настольное приложение на ПК, который я разработал c#, которые используют базу данных SQL. Через несколько месяцев я опубликовал…

У меня есть сервер (2008R2), который имеет ограниченный доступ (2010) к базам данных, относящимся к отделам и их потребностям. У…

I have to add globalization (Arabic) to my English ASP.NET применение. Было так легко получить информацию об изменениях, которые нужно…

Как уменьшить стоимость сканирования кластеризованного индекса для приведенного ниже запроса DECLARE @PARAMVAL varchar(3) set @PARAMVAL = ‘CTD’ select * from…

У меня проблема с Asp.net и SQL. У меня есть много ошибок тайм-аута из пула соединений. Все соединения используются внутри…

У нас есть собственное веб-приложение, которое имеет цветочный пользовательский интерфейс администратора, но плохие инструменты для гиков данных. Наш администратор данных…

У меня есть 2 вкладки в моем макете. Я не могу получить входное значение, введенное в EditText в неактивной вкладке….

Я пытаюсь добавить колонку» ожидание» Существует две таблицы «документ» и » утверждение» Я показываю таблицу документов в представлении сетки, но…

Я продолжаю получать эту ошибку при запуске мастера импорта для файла csv Error 0xc02020c5: Data Flow Task 1: Data conversion…

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

Я пытаюсь вставить запись в базу данных sql m. Мое первое значение-1, затем 1001. Моя вставка установит первое значение, которое…

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

Таким образом, в SQL server я сохраняю свои даты в формате UTC, у меня также есть локализованный часовой пояс в…

Иметь ситуацию 2 различных таблицы CREATE TABLE albums( album_id int identity (10,5) not null, album_title varchar (40) not null, album_itunes_price…

Я должен экспортировать данные Sql server в файл Excel и экспортировать данные, которые я использую sql queryкак insert into OPENROWSET(‘Microsoft.Jet.OLEDB.4.0’,…

С нескольких недель происходит много попыток подключения пользователя ‘ SA ‘ к моей базе данных Sql server. Ошибка входа пользователя…

Я никогда не использовал ODBC до сегодняшнего дня ни MSSQL. У меня есть сервер MSSQL, работающий на 89.12.12.12 (пример). Я…

У меня есть база данных с таблицей scheduleи многими данными с такими свойствамиid title type description, как и foreigns keysday_id…

Я пытаюсь создать надстройку для Microsoft SQL Server Management Studio. Я хочу использовать существующий «DROP and CREATE To», чтобы создать…

Я искал ответ на это здесь на досках и в другом месте-я предполагаю, что этот вопрос уже был решен, но…

Я новичок в JavaScripts, и я пытаюсь построить блог навигации одной страницы с помощью bootstrap. У меня есть базовыйindex.html, который…

У меня есть таблица под названием Настройки с columnA, columnB, columnC, columnD, columnE и их значением, как следует: columnA =…

мое приложение MVC3 с помощью представлений ASPX. У меня есть две страницы, создать и редактировать, используя следующий раскрывающийся список:

я работаю над пакетом служб ssis и беру из него значения .xml-файл в назначение ado .net но при вводе значений…

У меня есть вопрос относительно идеи оптимизации производительности сложного поискового запроса. Такова ситуация: Базовая таблица с полями для поиска: Server…

У меня есть машина SQL Server 2012, на которой размещена база данных с большим количеством данных, которые я регулярно запрашиваю….

У меня есть таблица, которая имеет 200 миллионов строк, и она будет увеличиваться на 1,5 миллиона каждый день. Мне нужно…

У меня есть 3 таблицы в моей базе данных sql: assignresources tasks project projectтаблица содержит столбцы ID(pk), Guid, name, startdate,…

На этой неделе я разрабатываю некоторые SqlDependencyи Sql Notificationконцепции для кэширования в моей службе wcf. И за это время я…

тестовые данные Например, у меня есть тестовые данные, как показано ниже. |Student |Class |Score| |A |English |90 | |B |Computer…

Мастер Йода рекомендует:  Авторизация в Symfony через социальные сети. Авторизация через Google

Я хочу получить различные два столбца из таблицы SQL Server. Я получаю этот результат — могу ли я оптимизировать этот…

Мы установили службу на порт (443), который уже запускал приложение после его остановки. При запуске новой службы старая служба должна…

Я попытался создать логин, который будет иметь доступ к одной таблице из нескольких различных баз данных. Когда я пытаюсь запросить…

Как конвертировать значение даты в формат dd-MM-yyyyin SQL? Я сохранил дату в базе данных в varchar(10)формате. Теперь хочу сравнить дату…

Я пытаюсь написать запрос, который бы получал клиентов с 7 последовательными транзакциями, заданными списком CustomerKeys. В настоящее время я выполняю…

У нас есть 3 базы данных с той же таблицей, но разные данные в них, на 3 серверах, теперь у…

Я сузил запрос до этого: select * FROM items where account >


Мне нужно найти все строки в любой таблице, где дата создания / обновления равна нулю Есть более 500 таблиц, поэтому…

Как SQL Server выполняет эти два запроса, есть ли разница: Выберите с помощью join SELECT * FROM AspNetUsers LEFT JOIN…

Поэтому я просто установил управление сервером, и когда я пытаюсь подключиться к серверу, это дает мне ошибку. Я пошел в…

Я использую Joomla 1.3 для одного из моих клиентов. и теперь я хочу переместить его на заказ asp.net приложение с…

Im вызов хранимой процедуры SQL из части C#.net код: SqlHelper.ExecuteDataset(sqlConnection, CommandType.StoredProcedure, STORED_PROC_NAME, sqlParameters); где sqlParametersпеременная определяется как: SqlParameter[] sqlParameters =…

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

Сброс пароля SQL Server 2008 R2sa: sp_password @new = ‘joomlacmssenha’, @loginame = ‘sa’ Но когда я пытаюсь получить доступ с…

Я попытался настроить развертывание службы удаленных рабочих столов в режиме высокой доступности в Windows Server 2012 по этой ссылке ….

У меня странная ситуация и я не знаю, как к ней подойти. У меня 2 отдельных стола: Таблица а-представления id…

У меня есть.sln-файл, созданный в Visual Studio 2010: Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010…

-please give some democode import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBCConnectivity < public static…

Я задавал этот вопрос ранее, но, вероятно, не был слишком ясен о том, чего я хочу достичь. Я постараюсь быть…

У меня отпуск на неделю. Не сможет ответить в течение этого времени. ожидаемый результат При использовании IIS с учетными записями…

Я попытался создать новую базу данных с помощью класса, наследующего DataContext.CreateDatabase () и я также попробовали метод из записи StackExchange,…

Я хочу сделать так, чтобы окно сообщения всегда было центрировано по вертикали на X, даже если в него добавляется больше…

Все еще относительно новый для языка sql и нужна небольшая помощь и руководство.. У меня есть таблица, в которой есть…

Я не знаю, Может ли это помочь, но когда я нажимаю и удерживаю веб-страницу в мобильном safari или в cordova/phonegap-приложениях…

У меня есть следующие таблицы : Customer(ID, Name) Transaction(ID, CustomerID, Date) Объекты сопоставления для таблиц определяются без объектов, только примитивные…

im работает над существующим приложением Laravel 4 и AngularJS. Трасса вполне сделана угловым. I use the $routeProvider and redirect if…

Здравствуйте я следовал шагам в ссылках http://help.testflightapp.com/customer/portal/articles/402741-how-to-create-an-ipa-xcode-3- На шаге 4, Когда я пытаюсь получить всплывающее окно, я не вижу значок…

Таким образом, у меня есть веб-сайт, работающий, и согласно администратору общего хостинга, есть некоторые SQL-запросы, которые штабелируют и вызывают сбой…

Так, недавно DBA пытается сказать нам, что мы не можем использовать синтаксис SELECT X, Y, Z INTO #MyTable FROM YourTable…

Это с сервера или в приложении? Я использую нижеприведенную строку для экспорта из rdl. byte [] bytes = reportViewer.ServerReport.Отрисовка («EXCEL»,…

Я использую SQL Server 2012 и обнаружил странную проблему. Это исходный запрос, который я использовал: DELETE FROM [TABLE_TEMP] INSERT INTO…

Я пытаюсь установить плагин Master Data Services для Excel , но не могу получить установку на самом деле процесс из-за…

Объединение двух таблиц на основе даты и времени CREATE Table A (StartDate DATETIME, EndDate DATETIME, Name VARCHAR(50)) CREATE Table B…

Я пытаюсь внутреннее соединение трех таблиц и получить его, чтобы вернуть значения для XML-файла, но значения, которые из второй или…

Я создал хранимую процедуру для возврата auserID, когда a tokenи tokenTypeполучены. Хранимая процедура выглядит следующим образом: CREATE PROCEDURE [dbo].[UserTokens_Insert] (…

В настоящее время мы используем драйвер odbc для подключения к нашему MS SQL Server. Однако мы хотим иметь возможность перетаскивать…

Я пытаюсь заменить var binary, но мне это не удается. Моя инструкция update: update Test set Sect_ >

Я пытаюсь создать приложение в play framework с помощью ms sql server и java, и я получаю [ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver]исключение кто-нибудь,…

Мы добавляем ‘[] ‘ только для того, чтобы отличить ключевое слово system defined от нашего собственного … ? Или есть…

Использование SQL Server 2012 у меня есть 2 таблицы (t1 и t2). в обеих таблицах миллионы записей. в обоих случаях…

При выполнении команды SqlExceptionдается следующее. Соединение уже установлено. Клиентская ОС является эмулированной Windows CE запрос базы данных SQL Server 2012….

У нас есть «сервер», который настроен с SQL Server 2008 R2 на машине A. В той же локальной сети у…

Я просто не вижу решения своей проблемы! Мне нужно импортировать это в SQL Server. 2-я колонка (и еще несколько) от…

У меня есть список строк в datatable. Теперь я хочу расставить приоритеты строк не в соответствии с DESCилиASC, а на…

Клиентские машины не имеют доступа к порту SQL Server и открытие порта для клиентских компьютеров невозможно. Сценарий: у нас есть…

Недавно я начал работать над приложением MVC3 с серверной частью SQL Server 2008R2. Приложение получает потоковые данные из веб-запроса, а…

Я использую следующий запрос: INSERT INTO role (name, created) VALUES (‘Content Coordinator’, GETDATE()), (‘Content Viewer’, GETDATE()) Однако я не указываю…

У меня есть таблица в SQL Server. Эта таблица имеет поле изображения, и приложение хранит в нем файлы. Есть ли…

Это мой первый пост на этом сайте, поэтому я заранее сожалею, если некоторые вещи выходят странными в форматировании �� После…

Эта проблема возникает при интеграции двух приложений, использующих две базы данных в одном SQL Server 2005. Оба приложения имеют свою…

Тестовые задания в ОТР по MSSQL


Тесты по MSSQL

  1. Перечислите основные конструкции языка SQL, которые могут использоваться в инструкции SELECT.
  1. Напишите запрос, который выводит имена всех компаний, сделавших больше 10 заказов.

FROM Customers t_Customers

WHERE (SELECT COUNT(OrderID)

FROM Orders t_Orders

WHERE Customer > 10

  1. Что такое представление (View)? Для чего оно предназначено? Чем представление отличается от производной таблицы? Что предпочтительнее использовать с точки зрения производительности — представление или производную таблицу?

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

Оно может использоваться для упрощения доступа к данным, то есть содержать в своём теле часто используемый SQL запрос.

Производная таблица отличается от представления тем, что её SQL запрос полностью помещается в месте её использования и при необходимости повторного использования в другом месте полностью копируется.

  1. Что такое ограничение (constraint )? Перечислите все известные типы ограничений.

Ограничение – это условия, наложенные на хранящиеся в таблице данные. Они предназначены для обеспечения ссылочной и смысловой целостности данных.

  1. Что такое триггер? Перечислите все известные типы триггеров. Для каких объектов базы данных можно определить триггеры и какие?

Триггер – это хранимая процедура, которая выполняется после наступления определённого события в базе данных. Триггеры бывают на добавление данных, на изменение данных и на удаление данных. Также бывают триггеры выполняющиеся после наступления события (AFTER) и триггеры, выполняющиеся вместо события (INSTEAD OF)

  1. Чем отличается таблица #Table от таблицы ##Table?

#Table – временная таблица, доступная только текущему пользователю и только в текущей сессии.

##Table – временная таблица, доступная всем пользователям.

  1. Как организовать связь многие-ко-многим?

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

  1. Что такое нормальная форма? Перечислите все известные нормальные формы. Какие нормальные формы чаще всего применяются на практике?

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

Первая нормальная форма

Вторая нормальная форма

Третья нормальная форма

Нормальная форма Бойса-Кодда

Четвёртая нормальная форма

Пятая нормальная форма

  1. Что такое транзакция? Какие режимы транзакций существуют в SQL Server 2000?

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

В SQL Server есть режим явных транзакций (когда пользователь сам вызывает BEGIN TRANSACTION) и режим автоматических транзакций.

  1. Какой параллелизм используется в SQL Server 2000 по умолчанию — оптимистический или пессимистический? Чем они отличаются?

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

Пессимистический параллелизм при каждой операции считывания накладывает блокировку на считываемые данные. Другие пользователи не могут изменять данные, пока пользователь, наложивший блокировку её не снимет.


  1. Какие существуют уровни изоляции транзакций? Чем они отличаются друг от друга?

В SQL Server существуют следующие уровни изоляций транзакций:

READ UNCOMMITED – инструкции могут считывать строки, которые были изменены другими транзакциями, но ещё не были закоммичены.

READ COMMITED – команды не могут считывать данные, которые были изменены другими транзакциями, но ещё не были закоммичены.

REPEATABLE READ – инструкции не могут считывать данные, которые были изменены другими транзакциями, но ещё не были закоммичены. Другие транзакции не могут изменять данные, считываемые текущей транзакцией.

SERIALIZABLE – самый строгий уровень блокировки. Инструкции не могут считывать данные, которые были изменены другими транзакциями, но ещё не были зафиксированы. Другие транзакции не могут изменять данные, считываемые текущей транзакцией. Другие транзакции не могут вставлять строки, которые входят в диапазон ключей, считываемых текущей транзакцией (то есть в течении транзакции одна и та же инструкция будет возвращать один и тот же набор строк)

  1. Какая блокировка налагается на ресурсы при выполнении команды SELECT? Команды UPDATE? Команды INSERT?
  1. Что такое мертвая блокировка (deadlock)? Какие причины могут привести к возникновению мертвой блокировки? Как SQL Server решает проблемы мертвых блокировок и по какому принципу?

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

SQL Server в случае обнаружения мёртвой блокировки откатывает ту транзакцию, которая захватила меньше ресурсов.

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

Хранимая процедура – последовательность команд SQL с определённым именем. С точки зрения производительности лучше использовать хранимые процедуры, а не пакет команд, потому что пакет команд будет компилироваться каждый раз при выполнении. А хранимая процедура компилируется один раз при первом запуске. Хранимая процедура перекомпилируется сама при изменении объектов базы данных, к которым она обращается. Нет смысла перекомпилировать её вручную. Чтобы перекомпилировать хранимые процедуры, которые осуществляют доступ к определённой таблице нужно вызвать системнух хранимую процедуру sp_recompile.

  1. Что такое динамический SQL? Какие проблемы с правами доступа к объектам могут возникнуть при использовании динамического SQL?

Динамический SQL – это инструкции SQL, которые генерируется в строковых переменных во время выполнения.

  1. Для чего предназначена функция EXEC() и хранимая процедура sp_executesql? Какая между ними разница?

Они предназначены для выполнения динамически созданного пакета sql команд. Sp_executesql позволяет подставить параметры в пакет команд, а в exec нужно каждый раз создавать новую строка SQL команд, подставив параметры преобразованные в строку.

  1. Для чего нужны индексы? Для каких объектов базы данных SQL Server 2000 можно создать индекс? Какие бывают индексы? Что означает опция fill factor? Что означает опция pad_index? Что означает и как работает опция IGNORE_DUP_KEY? Что означает опция SORT_IN_TEMPDB? Какие существуют способы перестройки индексов? Для чего нужна опция DROP_EXISTING?

Индексы нужны для ускорения поиска. Индексы бывают кластерные и некластерные. Уникальные и неуникальные. При наличии кластерного индекса строки таблицы физически располагаются упорядоченными в соответствии с этим индексом.

FillFactor указывает процент заполнения страницы, хранящей значения индекса.

Pad_index указывает количество пустого пространства на внутренних узлах дерева индекса.

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

  1. Для чего используется статистика? Создается ли статистика по индексированному столбцу? По неиндексированному столбцу? В чем разница между выполнением команды UPDATE STATISTICS и автоматическим обновлением статистики?

Статистика используется оптимизатором выполнения запросов. Статистика создаётся и по индексированному столбцу и по неиндексированому. UPDATE STATISTICS позволяет обновить статистику вручную, но обычно это не требуется, потому что автоматическое обновление статистики как правило само справляется со своими обязанностями.

  1. Что такое цепочка владения? Ситуация: Пользователь TOwner владеет таблицей Тable. Он выполнил команду GRANT SELECT ON [Table] TO VOwner.

Пользователь VOwner создал на основе таблицы Table представление View и выполнил команду GRANT SELECT ON [View] TO CommonUser.

Сможет ли пользователь CommonUser выполнить команду SELECT * FROM View? Почему?

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

  1. Что такое курсор? Какие бывают курсоры T-SQL? Когда используются курсоры?

Курсоры позволяют производить низкоуровневые операции с отдельной строкой выборки. Курсоры бывают последовательного просмотра, для пролистывания и вперёд и назад, для обновления. Курсоры используются, когда невозможно выполнить какую-нибудь операцию стандартными командами SELECT или UPDATE.

CREATE TABLE #T1 (c1 INT IDENTITY,c2 INT)
CREATE TABLE #T2 (c1 INT IDENTITY,c2 CHAR(5))

INSERT INTO #T1 VALUES (1)
INSERT INTO #T1 VALUES (2)
INSERT INTO #T1 VALUES (2)
INSERT INTO #T1 VALUES (3)
INSERT INTO #T1 VALUES (4)
INSERT INTO #T1 VALUES (4)
INSERT INTO #T2 VALUES (‘N1’)
INSERT INTO #T2 VALUES (‘N2’)

CREATE PROCEDURE #P1
@name CHAR(5)
AS
SELECT #T1.c2,#T2.c2 AS [name]
FROM #T1 LEFT OUTER JOIN #T2
ON #T1.c2=#T2.c1
WHERE #T2.c2=@name

CREATE PROCEDURE #P2
@name CHAR(5)
AS
SELECT #T1.c2,#T2.c2 AS [name]
FROM #T1 LEFT OUTER JOIN #T2
ON #T1.c2= #T2.c1 AND #T2.c2=@name


  1. Чем с точки зрения возвращаемого результата различаются
    две хранимые процедуры?

Во #P2 в конечном результате будут все строки, которые в результате #P1 плюс строки, из таблицы #T1, для которых не найдено соответствия в таблице #T2.
2. Какой результат вернет запрос:
SELECT * FROM #T1

6 4
3. Какой результат вернет запрос:
SELECT * FROM #T2

2 N2
4. Какой результат вернет вызов хранимой процедуры:
EXEC #P1 ‘N1’

1 N1
5. Какой результат вернет вызов хранимой процедуры:
EXEC #P2 ‘N1’

4 NULL
6. Какой результат вернет вызов хранимой процедуры:
EXEC #P1 ‘N3’

Вернётся пустая таблица.
7. Какой результат вернет вызов хранимой процедуры:
EXEC #P2 ‘N3’

CREATE TABLE #Temp (val VARCHAR(10),grp INT,[id] INT IDENTITY NOT NULL)

INSERT INTO #Temp VALUES (‘#a’,1)
INSERT INTO #Temp VALUES (‘#b’,1)
INSERT INTO #Temp VALUES (‘#c’,5)
INSERT INTO #Temp VALUES (‘#c’,5)
INSERT INTO #Temp VALUES (‘#d’,5)
Необходимо написать запрос, который нумерует значения val внутри группы grp. Вывести: ,val,grp,[id]

SELECT (select count(*)

from #Temp t2 where t1.grp=t2.grp and t2.val t1.id) ,

SQL Server: Десятка главных секретов экспертов по SQL Server

Посетителей: 7204 | Просмотров: 11549 (сегодня 0)

Мастер Йода рекомендует:  Битва со списками или применение классов для вывода списков в PHP
Шрифт:

За последние годы многие компании сократили размер своих ИТ-отделов. Многим администраторам баз данных приходится отвечать за работу большего числа баз SQL Server. Но хуже всего то, что часто в компании нет выделенного администратора базы данных — вольно или невольно эту работу делает кто-то другой. Иногда администратору базы данных приходится работать в авральном режиме, гася постоянно возникающие «пожары». Такая работа трудна, опасна и плохо совместима с нормальной жизнью. Никому не понравится находиться в постоянном напряжении и стрессе.

Один из выходов состоит в том, чтобы потратить немного времени на улучшение среды SQL Server чтобы ее можно было легче понимать и управлять ею. Основываясь на своем опыте работы консультантом по SQL Server, я предлагаю десять способов, которые позволят администратору базы данных SQL Server получить контроль над своей средой и снизить вероятность «пожаров». Список составлен в порядке увеличения важности совета.

10. Выполните инвентаризацию

Сколько раз вас просили восстановить поврежденные данные базы, о существовании которой вы понятия не имели? Базы данных SQL Server могут легко расползаться по всему предприятию. Команда администраторов БД может легко утратить контроль над этим процессом, что приводит к появлению неуправляемых экземпляров SQL Server. В таких базах данных не выполняется резервное копирование, на них не устанавливаются исправления, они должным образом не защищены и вообще на них не выполняется масса других важных и необходимых задач по управлению.

Критически важно иметь актуальный список экземпляров серверов и баз данных на предприятии, которым вы должны управлять. Это единственный способ должным образом управлять ими, консолидировать их, если это необходимо, а также корректно определять масштаб и планировать проекты и обновления. Это также помогает определить границы своих обязанностей, опубликовав список известных экземпляров, за которые вы обязуетесь отвечать по согласованию с различными командами и отделами организации. Вы можете определить политику поддержки известных экземпляров и настоять на том, чтобы принимать в обслуживание новые экземпляры, только если они соответствуют вашим рекомендациям по конфигурации.

Есть много инструментальных средств, позволяющих выполнить инвентаризацию SQL Server, — от простых утилит типа SQLPing3 и SQLRecon до Microsoft Assessment and Planning Toolkit и Quest Discovery Wizard.

9. Стандартизуйте конфигурации

Если число баз данных и экземпляров SQL Server, за которые вы отвечаете, постоянно растет, то так же растет и количество различных конфигураций. Исключительно тяжело эффективно работать, если при переходе от экземпляра к экземпляру нужно постоянно держать в голове подробности конфигурации каждого из них.

Решение заключается в максимальной стандартизации конфигурации в плане имен дисков, вариантов конфигурации сервера, параметров настройки базы данных, параметров обслуживания базы данных и настройки защиты и т. п. В SQL Server 2008 появилась функциональность управления на основе политик, позволяющая определять и приводить в исполнение политики. Лара Руббелке (Lara Rubbelke), специалист по технологии SQL Server в Microsoft, также разработала каркас EPM (Enterprise Policy Management Framework), который позволяет легко реализовать эту функциональность на экземплярах SQL Server 2005 и SQL Server 2000. Загрузить EPM Framework можно с сайта CodePlex (www.codeplex.com). На рис. 1 показан пример отчета EPM Framework.

Рис. 1. Отчет Enterprise Policy Management Framework

8. Разберитесь с подсистемой ввода-вывода

Есть несколько обстоятельств, связанных с подсистемой ввода-вывода, которые могут затронуть ваши экземпляры SQL Server. Вы должны знать о них и их возможном влиянии.

  • Работоспособность подсистемы ввода-вывода, а именно пропускная способность операций чтения-записи и размер дискового пространства. Подсистема должна справляться с пиковыми рабочими нагрузками и обладать достаточным запасом дискового пространства для роста объема данных. Выявляя узкие места подсистемы ввода-вывода и перемещая данные и/или журналы в другие ее части подсистемы ввода-вывода, можно более равномерно распределять нагрузку.
  • Избыточность подсистемы ввода-вывода, то есть уровень RAID и способность создавать зеркальные резервные копии с чередованием и поддерживать какие-либо формы зеркального отображения или репликации (на уровне подсистемы ввода-вывода, а не SQL Server). Важно защитить данные и журналы от сбоев дисков и других возможных проблем. При этом всегда нужно найти компромисс:решение на основе RAID-10 обеспечивает лучшую избыточность, чем RAID-5, но оно дороже. За более подробной информацией отсылаю вас к «белой книге» «Physical Database Storage Design».
  • Правильность конфигурации подсистемы ввода-вывода в смысле размера блоков чередования в RAID, размера кластеров в файловой системе NTFS и выравнивания разделов. Подробнее читайте в блоге запись «Are your disk partition offsets, RAID stripe sizes, and NTFS allocation units set correctly?».

7. Создайте собственный план обслуживания

Всякий раз, читая курсы по обслуживанию баз данных, я всегда начинаю с того, что говорю:«Нельзя просто запустить базу данных в производственной среде и уйти». Со временем индексы становятся фрагментированными, что ведет к снижению производительности. Статистические данные устаревают, что приводит к созданию плохих планов запросов и низкой производительности. Работа подсистем ввода-вывода может нарушаться, и никто не отменял потребности в регулярном резервном копировании.

Все эти проблемы решаются при наличии всеобъемлющего плана обслуживания, учитывающего особенности ваших баз данных. Нестандартный план намного лучше, чем универсальный, который не учитывает специфических потребностей вашей среды. В моей статье в журнале TechNet Magazine за август 2008 г. «Лучшие советы по эффективному обслуживанию баз данных» рассказывается создание хорошего плана обслуживания. Создание собственного плана обслуживания лучше начать с всеобъемлющего и бесплатного сценария от Ола Халленгрен (Ola Hallengren). Именно его я рекомендую своим клиентам.

6. Позаботьтесь о защите своей системы

Очень важно потратить достаточно времени на активное обнаружение проблем с безопасностью, чтобы предотвратить нарушения защиты и не думать о них. В другой моей статье в журнале TechNet Magazine «Распространенные проблемы безопасности и решения SQL Server» перечислены 10 самых распространенных проблем безопасности и способы их решения. Также не забывайте устанавливать самые свежие исправления и выявлять уязвимости.

5. Дружите со своими разработчиками

Одна из главных точек напряженности в любом ИТ-отделе часто находится между командами администраторов баз данных и разработчиков. Эти две команды обычно не понимают приоритеты и заботы друг друга — от сроков разработки до решений в области проектирования SQL Server. Обычное дело — различное отношение к поведению и проблемам с производительностью, а также к обязанностям по развертыванию и поддержке.

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

4. Разработайте всеобъемлющую стратегию восстановления в случае аварий

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

Совместно с топ-менеджментом определите допустимое время простоя и лицензионные соглашения, относящиеся к вашим базам данных, спланируйте, как восстанавливать данные после различных аварий, выясните место баз данных и всех экземпляров SQL Server в плане обеспечения непрерывности работы компании. Выясните относительную важность всех баз данных и экземпляров, чтобы правильно определить приоритеты при восстановлении после сбоя или аварии.

Также нужно реализовать технологии, позволяющие своевременно узнать о возникновении проблем, таких как контрольные суммы страниц, проверки согласованности, уведомления Агента SQL и System Center Operations Manager. Эта инфраструктура восстановления поможет вам защитить данные за счет резервного копирования, доставки журналов, репликации и зеркального отображения базы данных, а в случае сбоев позволит перейти на резервную зеркальную систему или другой узел в кластере. Есть две «белых книги» Microsoft, которые могут помочь вам в этом: “High Availability with SQL Server 2008» и «Proven SQL Server Architectures for High Availability and Disaster Recovery».

3. Проверьте регулярные резервные копии

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

Более подробные сведения можно найти в двух моих статьях в журнале TechNet Magazine за 2009 г.: “Понимание резервных копий SQL Server» и «SQL Server: Восстановление после аварий с помощью резервных копий.”

2. Организуйте мониторинг и обеспечьте поддержку высокой производительности


Забота о производительности занимает большую часть рабочего времени администратора базы данных, но есть много способов упростить этот процесс:

  • определите базовые уровни производительности, чтобы можно было увидеть, действительно ли меняется производительность;
  • разбейте систему на отдельные части, чтобы можно было измерять производительность локально, исключив влияние внешних факторов или других подсистем;
  • используйте методологию определения ожиданий и очередей, чтобы быстро и точно выявлять причины проблем с производительностью;
  • выполняйте мониторинг системы, используя изоляцию отдельных компонентов, счетчики производительности и статистику ожидания. Так вы вовремя узнаете, когда производительность начнет ухудшаться. Используйте имеющийся в SQL Server 2008 сборщик данных (Data Collector) и Performance Dashboard — в SQL Server 2005;
  • внедрите план обслуживания;
  • тщательно спланируйте и реализуйте стратегию индексации, используя такие инструменты, как Помощник по настройке ядра СУБД (Database Engine Tuning Advisor, DTA), динамические представления (DMV) для определения недостающих индексов и оценки исп��льзования имеющихся индексов.

1. Знайте, где нужно искать информацию

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

Самый главный источник информации о SQL Server — Электронная документация по SQL Server, которую можно загрузить и установить локально или использовать в интерактивном режиме через Интернет. Эта документация замечательно помогает узнавать синтаксис, но если вопрос посложнее или нужно исследовать неполадку, лучше всего разместить вопрос на форуме. В библиотеке MSDN есть много форумов по SQL Server и популярных сайтов сообщества пользователей SQL Server, например SQL Server Central.

Другой быстрый способ поиска помощи — сообщество SQL Server на Twitter. Разместите свой вопрос с тегом #sqlhelp, который отслеживают много экспертов по SQL Server (включая меня).

Посещайте посвященные SQL Server конференции, такие как ежегодная встреча PASS Community Summit, проводимый раз в два года семинар SQL Server Connections или более частые конференции SQL Saturdays. Следите за блогами, которые ведут специалисты SQL Server. Узнать, какие блоги наиболее активны и ценны, можно с помощью рейтинга блогов, который ведет обладающий званием MVP Томас ЛаРок (Thomas LaRock).

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

Тест знаний MS SQL Server

категория
Базы данных
пройден
вопросов в тесте
требуется
сертификационный нет
в рейтинге да
время 20 минут
автор admin

Введение в тест MS SQL Server

MS SQL Server — реляционная база данных, разработанная компанией Microsoft, в которой используются языки запросов MS-SQL и T-SQL (Transact-SQL).

Microsoft SQL сервер изначально был построен на основе исходного кода Sybase. Со временем в него добавлялись все новые и новые возможности, например, IDE инструменты, средства интеграции, OLAP, сервис нотификаций и так далее.

MS SQL Server является основной базой данной, которую используют программисты пишущие на ASP.NET, Visual Basic .NET, C# и многих других языках программирования.

Надеемся, что тест MS SQL сервер будет интересен широкому кругу программистов.

Предварительные требования к тесту

Тест рассчитан на широкую аудиторию программистов с разным уровнем опыта разработки приложений. Тем не менее рекомендуем обратить внимание на следующие тесты:

Структура теста MS SQL Сервер

Вопросы теста можно распределить на следующие темы:

  • Синтаксис языка запросов MS-SQL
  • Data Definition Language (DDL) в MS SQL
  • Data Manipulation Language (DML) в MS SQL
  • Права и роли (permissions)
  • Основы администрирования MS SQL Server

Если Вы считаете, что какая-либо важная тема плохо покрыта вопросами теста, сообщите нам, пожалуйста.

Дальнейшее развитие теста по MS SQL

В первую очередь команда Quizful планирует создать тест по MS SQL сервер среднего уровня сложности. В тесте будут подробно рассмотрены более сложные объекты базы данных, такие как, например, хранимые процедуры.

Кроме этого планируется создать отдельный тест по администрированию MS SQL Server.

Ждем Ваших отзывов по поводу теста. Желаем удачи.

Важно: Ниже обсуждается только тест в целом: покрытие тематик, типы вопросов, пути улучшения теста и так далее.

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

Часто задаваемые вопросы о запросах к системному каталогу сервера SQL Server Querying the SQL Server System Catalog FAQ

ОБЛАСТЬ ПРИМЕНЕНИЯ: SQL Server База данных SQL Azure Azure Synapse Analytics (хранилище данных SQL) Parallel Data Warehouse APPLIES TO: SQL Server Azure SQL Database Azure Synapse Analytics (SQL DW) Parallel Data Warehouse

Данный раздел содержит список часто задаваемых вопросов. This topic contains a list of frequently asked questions. Ответы на эти вопросы — запросы, основанные на представлениях каталога. The answers to these questions are queries that are based on catalog views.

Часто задаваемые вопросы Frequently Asked Questions

Следующие разделы содержат часто задаваемые вопросы по категориям. The sections below list frequently asked questions by category.

Типы данных Data Types

Таблицы, индексы, представления и ограничения Tables, Indexes, Views, and Constraints

Модули (хранимые процедуры, определяемые пользователем функции и триггеры) Modules (Stored Procedures, User-Defined Functions, and Triggers)

Схемы, пользователи, роли и разрешения Schemas, Users, Roles, and Permissions

Ответы Answers

Как найти все таблицы, у которых нет кластеризованного индекса в указанной базе данных? How do I find all the tables that do not have a clustered index in a specified database?

Перед запуском следующих запросов замените действительным именем базы данных. Before you run the following queries, replace with a valid database name.

Кроме того, можно использовать функцию OBJECTPROPERTY , как показано в следующем примере. Or, you can use the OBJECTPROPERTY function as shown in the following example.

Как найти всех владельцев сущностей, содержащихся в определенной схеме? How do I find all the owners of entities contained in a specified schema?

Перед запуском следующего запроса замените и действительными именами. Before you run the following query, replace and with valid names.


Как найти все таблицы, у которых нет первичного ключа? How do I find all the tables that do not have a primary key?

Перед запуском следующих запросов замените действительным именем базы данных. Before you run the following queries, replace with a valid database name.

Кроме того, можно выполнить следующий запрос. Or, you can run the following query.

Как найти все таблицы, у которых нет индекса? How do I find all the tables that do not have an index?

Перед запуском следующего запроса замените действительным именем базы данных. Before you run the following query, replace with a valid database name.

Как найти все таблицы, содержится столбец идентификаторов? How do I find all the tables that have an identity column?

Перед запуском следующего запроса замените действительным именем базы данных. Before you run the following query, replace with a valid database name.

Кроме того, можно выполнить следующий запрос. Or, you can run the following query.

Этот запрос не возвращает имена столбцов. This query does not return the name of the columns.

Мастер Йода рекомендует:  Как создать форум

Как определить типы данных столбцов указанной таблицы? How do I find the data types of the columns of a specified table?

Перед запуском следующего запроса замените и действительными именами. Before you run the following query, replace and with valid names.

Как найти зависимости указанной функции? How do I find the dependencies on a specified function?

Перед запуском следующего запроса замените и действительными именами. Before you run the following query, replace and with valid names.

Как найти все хранимые процедуры в базе данных? How do I find all the stored procedures in a database?

Перед запуском следующего запроса замените действительным именем. Before you run the following query, replace with a valid name.

Как определить параметры для указанной хранимой процедуры или функции? How do I find the parameters for a specified stored procedure or function?

Перед запуском следующего запроса замените и действительными именами. Before you run the following query, replace and with valid names.

Как найти все определяемые пользователем функции в базе данных? How do I find all the user-defined functions in a database?

Перед запуском следующего запроса замените действительным именем базы данных. Before you run the following query, replace with a valid database name.

Как найти все представления в базе данных? How do I find all views in a database?

Перед запуском следующего запроса замените действительным именем базы данных. Before you run the following query, replace with a valid database name.

Как найти все сущности, которые были изменены в течение последних N дней? How do I find all the entities that have been modified in the last N days?

Перед запуском следующего запроса замените и действительными значениями. Before you run the following query, replace and with valid values.

Как определить типы данных LOB указанной таблицы? How do I find the LOB data types of a specified table?

Перед запуском следующего запроса замените и действительными именами. Before you run the following query, replace and with valid names.

Как просмотреть определение модуля? How do I view the definition of a module?

Перед запуском следующего запроса замените и действительными именами. Before you run the following query, replace and with valid names.

Кроме того, можно использовать функцию OBJECT_DEFINITION , как показано в следующем примере. Or, you can use the OBJECT_DEFINITION function as shown in the following example.

Как просмотреть определение триггера уровня сервера? How do I view the definition of a server-level trigger?

Как найти столбцы первичного ключа для указанной таблицы? How do I find the columns of a primary key for a specified table?

Перед запуском следующего запроса замените и действительными именами. Before you run the following query, replace and with valid names.

Кроме того, можно использовать функцию COL_NAME , как показано в следующем примере. Or, you can use the COL_NAME function as shown in the following example.

Как найти столбцы внешнего ключа для указанной таблицы? How do I find the columns of a foreign key for a specified table?

Перед запуском следующего запроса замените и действительными именами. Before you run the following query, replace and with valid names.

Как найти разрешения, предоставленные или отклоненные для указанного участника? How do I find the permissions granted or denied to a specified principal?

В следующем примере создается функция, возвращающая имя сущности, для которой проверяются разрешения. The following example creates a function to return the name of the entity on which the permissions are checked. Эта функция вызывается в следующих ниже запросах. The function is invoked in the queries that follow. Эту функцию нужно создать в каждой базе данных, в которой проверяются разрешения. The function must be created in every database in which you want to check permissions.

Как определить, если столбец используется в выражении вычисляемого столбца? How do I determine if a column is used in a computed column expression?

Перед запуском следующего запроса замените , , и > действительными именами. Before you run the following query, replace , , and > with valid names.

Как найти все столбцы, которые используются в выражении вычисляемого столбца? How do I find all the columns that are used in a computed column expression?

Перед запуском следующего запроса замените действительным именем. Before you run the following query, replace with a valid name.

Как найти столбцы, зависящие от указанного определяемого пользователем типа данных CLR или псевдонима типа данных? How do I find the columns that depend on a specified CLR user-defined type or alias type?

Перед запуском следующего запроса замените действительным именем и с допустимым, с квалификатором схемы CLR определяемого пользователем типа или имя типа с квалификатором схемы псевдоним. Before you run the following query, replace with a valid name and with a valid, schema-qualified CLR user-defined type, or schema-qualified alias type name. Следующий запрос требует членства в db_owner роли или разрешения на просмотр всех зависимых столбцов и вычисляемый столбец метаданных в базе данных. The following query requires membership in the db_owner role or permissions to see all dependent column and computed column metadata in the database.

Следующий запрос возвращает ограниченное и узкое представление столбцов, зависимых от определяемого пользователем типа CLR или псевдонима, но результирующий набор доступен для открытый роли. The following query returns a restricted and narrow view of columns dependent on a CLR user-defined type or alias, but the result set is visible to the public role. Этот запрос следует использовать в том случае, если предоставлены разрешения REFERENCE определяемого пользователем типа данных для других пользователей и отсутствует разрешение на просмотр метаданных объектов, созданных другими пользователями при использовании этого типа. You can use this query if you have granted REFERENCE permissions on your user-defined type to others and you do not have permission to view the metadata of the objects others have created that use the type.

Как найти вычисляемые столбцы, зависящие от указанного определяемого пользователем типа данных CLR или псевдонима типа данных? How do I find the computed columns that depend on a specified CLR user-defined type or alias type?


Перед выполнением следующего запроса замените на допустимое имя, а — на допустимый, определяемый пользователем тип данных CLR с указанием схемы, имя псевдонима типа. Before you run the following query, replace with a valid name and with a valid, schema-qualified CLR user-defined type, alias type name.

Как найти параметры, зависящие от указанного определяемого пользователем типа данных CLR или псевдонима типа данных? How do I find the parameters that depend on a specified CLR user-defined type or alias type?

Перед выполнением следующего запроса замените на допустимое имя, а — на допустимый, определяемый пользователем тип данных CLR с указанием схемы, имя псевдонима типа. Before you run the following query, replace with a valid name and with a valid, schema-qualified CLR user-defined type, alias type name. Следующий запрос требует членства в db_owner роли или разрешения на просмотр всех зависимых столбцов и вычисляемый столбец метаданных в базе данных. The following query requires membership in the db_owner role or permissions to see all dependent column and computed column metadata in the database.

Следующий запрос возвращает ограниченное и узкое представление параметров, зависящих от определяемого пользователем типа CLR или псевдонима, но результирующий набор доступен для открытый роли. The following query returns a restricted and narrow view of parameters that depend on a CLR user-defined type or alias, but the result set is visible to the public role. Этот запрос следует использовать в том случае, если предоставлены разрешения REFERENCE определяемого пользователем типа данных для других пользователей и отсутствует разрешение на просмотр метаданных объектов, созданных другими пользователями при использовании этого типа. You can use this query if you have granted REFERENCE permissions on your user-defined type to others and you do not have permission to view the metadata of the objects others have created that use the type.

Определение ограничения CHECK, зависящие от указанного типа пользовательских данных CLR How do I find the CHECK constraints that depend on a specified CLR user-defined type?

Перед запуском следующего запроса замените действительным именем и с допустимым, с квалификатором схемы имя определяемого пользователем типа CLR. Before you run the following query, replace with a valid name and with a valid, schema-qualified CLR user-defined type name.

Определение представления, функции Transact-SQL и Transact-SQL хранимой процедуры, зависящие от указанного определяемого пользователем типа данных CLR или псевдонима типа? How do I find the views, Transact-SQL functions, and Transact-SQL stored procedures that depend on a specified CLR user-defined type or alias type?

Перед выполнением следующего запроса замените на допустимое имя, а — на допустимый, определяемый пользователем тип данных CLR с указанием схемы, имя псевдонима типа. Before you run the following query, replace with a valid name and with a valid, schema-qualified CLR user-defined type, alias type name.

Определяемые в функции или процедуре параметры неявно привязаны к схемам. The parameters defined in a function or procedure are implicitly schema bound. Таким образом, можно просмотреть параметры, зависящие от определяемого пользователем типа CLR или псевдонима типа с помощью sys.sql_dependencies представления каталога. Therefore, parameters that depend on a CLR user-defined type or alias type can be viewed by using the sys.sql_dependencies catalog view. Процедуры и триггеры не привязаны к схеме. Procedures and triggers are not schema bound. Это означает, что зависимости между любыми выражениями, определенными в теле процедуры или триггера или определяемом пользователем типе данных CLR или псевдониме типа, не обслуживаются. This means that dependencies between any expression defined in the body of the procedure or trigger and a CLR user-defined type or alias type is not maintained. Привязанные к схеме представления и определяемые пользователем функции, имеющие выражения, зависящие от определяемого пользователем типа CLR, привязанные к схеме или типа псевдонима, обслуживаются в sys.sql_dependencies представления каталога. Schema bound views and schema bound user-defined functions that have expressions that depend on a CLR user-defined type or alias type are maintained in the sys.sql_dependencies catalog view. Зависимости между типами и функциями среды CLR и процедурами среды CLR не обслуживаются. Dependencies between types and CLR functions and CLR procedures are not maintained.

Следующий запрос возвращает все зависящие от схемы зависимости в представлениях, функциях Transact-SQL Transact-SQL и хранимых процедурах Transact-SQL Transact-SQL для указанного, определяемого пользователем типа данных CLR и псевдонима типа. The following query returns all schema-bound dependencies in views, Transact-SQL Transact-SQL functions, and Transact-SQL Transact-SQL stored procedures for a specified CLR user-defined type or alias type.

Как найти все ограничения определенной таблицы? How do I find all the constraints for a specified table?

Перед запуском следующего запроса замените и действительными именами. Before you run the following query, replace and with valid names.

Как найти все индексы для указанной таблицы? How do I find all the indexes for a specified table?

Перед запуском следующего запроса замените и действительными именами. Before you run the following query, replace and with valid names.

Как найти все объекты, которые имеют с определенным названием столбца? How do I find all the objects that have a specified column name?

Перед запуском следующего запроса замените и действительными именами. Before you run the following query, replace and with valid names.

Как найти все определяемые пользователем таблицы в указанной базе данных? How do I find all the user-defined tables in a specified database?

Перед запуском следующего запроса замените действительным именем. Before you run the following query, replace with a valid name.

Как найти все таблицы и индексы, которые секционированы? How do I find all the tables and indexes that are partitioned?

Перед запуском следующего запроса замените действительным именем. Before you run the following query, replace with a valid name.

Как найти все статистические данные определенного объекта? How do I find all the statistics on a specified object?

Перед запуском следующего запроса замените действительным именем и действительным именем таблицы, индексированного представления или возвращающей табличное значение функции. Before you run the following query, replace with a valid name and with a valid table, indexed view, or table-valued function name.

Как найти все статистические данные и статистические столбцы определенного объекта? How do I find all the statistics and statistics columns on a specified object?

Перед запуском следующего запроса замените действительным именем и действительным именем таблицы, индексированного представления или возвращающей табличное значение функции. Before you run the following query, replace with a valid name and with a valid table, indexed view, or table-valued function name.

Как найти определения представления? How do I find the definition of a view?

Перед запуском следующего запроса замените и действительными именами. Before you run the following query, replace and with valid names.

Кроме того, можно использовать функцию OBJECT_DEFINITION , как показано в следующем примере. Or, you can use the OBJECT_DEFINITION function as shown in the following example.

Администрирование MS SQL Server 2000

Предлагаемый Вашему вниманию тест «Администрирование MS SQL Server 2000» создан на основе одноименной базы знаний, состоящей из 88 вопросов по темам

  • TSQL, встроенные процедуры и функции
  • Автоматизация рутинных задач
  • Безопасность MS SQL Server 2000
  • Концепции и установка
  • Резервное копирование и восстановление
  • Репликация
  • Управление базами данных

В данном тесте будет задано 40 вопросов. Для успешного прохождения теста необходимо правильно ответить на 28 вопросов.

идет загрузка вопросов теста, пожалуйста подождите.

MS SQL — перенесенные базы подключаются только в read-only (только для чтения)

Итак, вводная: у нас есть сервер Microsoft SQL Server, установленный на Windows Server 2008 или выше. Причем не важно — имеем ли мы SQL Standard, SQL Enterprise или SQL Express — ситуация будет одинаковой.

Пока базы данных лежат по своему пути по-умолчанию, т.е. в Program files, все с ними хорошо. Но как только мы перенесем их в другой каталог (а тем более — на другой диск) — сразу появляются проблемы.

Проблемы заключаются в том, что либо MS SQL Server не желает подключать (аттачить) вовсе перенесенные базы данных, либо подключает, но только в режиме «только для чтения» (т.е. read-only).

Решение.

Проблема заключается в правах на папку, куда Вы перенесли базы данных. Дело в том, что изначально MS SQL Server прав на запись туда не имеет, соответственно, и работает не так.

Чтобы узнать — какие права нужны для этой папки — нужно пройти по адресу, где эти базы лежат по-умолчанию на данном сервере (например,

), нажать правой кнопкой мыши на папке с базами данных (как правило — «DATA»), в контекстном меню выбрать «Свойства», далее перейти на вкладку «Безопасность» и посмотреть текущие права.

Вы увидите там надпись вида «SQLServerMSSQLUser$HOSTNAME$SQLExpress» или типа того (вместо HOSTNAME — имя Вашего сервера, вместо SQLExpress — имя инстанции или ничего).

Теперь топаем туда, куда Вы базы скопировали, и добавляем эту группу с полными правами в безопасность (кстати да, это группа, а не пользователь).

А вот отсюда читаем внимательно! Просто так, введя частично имя группы и нажав на кнопку «Проверить имена» Вы ее не добавите! Windows будет себя вести так, как будто такого группы нет в ни в системе, ни в домене — нигде вообще. Почему это сделано — загадка (ибо безопасности оно не добавляет — отчаившись, админы добавляют группу «Все» и дают максимальные права на папку).
Вводить имя группы нужно ПОЛНОСТЬЮ. Каждый блин символ! Один в один, вот прямо как написано во вкладке «Безопасность» папки «DATA», где на ЭТОМ сервере лежат базы по-умолчанию. Если не введете хотя-бы один символ — группа не распознается. И неважно — какие объекты для поиска Вы выбираете — все равно пока не введете символ в символ — ОС будет говорить, что такого объекта не существует.

Итак, добавили группу с максимальными правами к папке, где сейчас лежат нужные базы данных — и снова пробуем присоединить их в MS SQL Server. Теперь должно получиться.

Добавить комментарий