Список баз данных и табличное пространство в SQL Server 2014. Список баз данных sql


Как получить список баз данных в Microsoft SQL Server на T-SQL? | Info-Comp.ru

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

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

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

Сейчас мы напишем SQL запрос с использованием системного представления sys.databases, который покажет нам список баз данных на экземпляре Microsoft SQL Server.

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

В данном случае для примера мы выведем следующие параметры баз данных:

  • Идентификатор базы данных;
  • Название базы данных;
  • Дату создания базы данных;
  • Состояние базы данных;
  • Уровень совместимости;
  • Модель восстановления.

Более детально посмотреть обо всех параметрах, которые возвращает представление sys.databases, можете посмотреть в официальной документации по Transact-SQL – Системное представление sys.databases

--Список баз данных SELECT database_id AS [ID], name AS [Название], CONVERT(CHAR(10), create_date, 104) AS [Дата создания], state_desc AS [Статус], compatibility_level AS [Уровень совместимости], recovery_model_desc AS [Модель восстановления] FROM sys.databases

Выводим список баз данных с помощью процедуры sp_helpdb

Хранимая процедура sp_helpdb выводит меньше информации о параметрах баз данных, однако она показывает дополнительную полезную информацию, например, размер базы данных. Также данный способ предпочтительней, если список баз данных необходим клиентскому приложению, т.е. из клиента лучше вызывать хранимую процедуру, чем посылать SQL запрос SELECT.

Процедура sp_helpdb возвращает следующие данные:

  • name - Название базы данных;
  • db_size - Общий размер базы данных;
  • owner - Владелец базы данных;
  • dbid - Идентификатор базы данных;
  • created - Дата создания базы данных;
  • status – Список значений параметров базы данных, разделенный запятыми. Параметры представлены в формате «Параметр=Значение», в случае с логическими параметрами выводятся только названия включенных параметров;
  • compatibility_level - Уровень совместимости.
--Список баз данных EXEC sp_helpdb

Теперь Вы знаете, как можно вывести список баз данных в Microsoft SQL Server. Если Вы начинающий программист и хотите еще больше узнать о языке T-SQL, то рекомендую почитать книгу «Путь программиста T-SQL», в ней очень подробно, специально для начинающих, рассказано про все основные конструкции языка, она включает много примеров и полезных советов.

У меня на этом все, пока!

Похожие статьи:

info-comp.ru

sql-server - Список информации о всех файлах базы данных в SQL Server

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

IF OBJECT_ID('tempdb..#DriveInfo') IS NOT NULL DROP TABLE #DriveInfo CREATE TABLE #DriveInfo ( Drive CHAR(1) ,MBFree INT ) INSERT INTO #DriveInfo EXEC master..xp_fixeddrives IF OBJECT_ID('[dbo].[Tmp_tblDatabaseInfo]', 'U') IS NOT NULL DROP TABLE [dbo].[Tmp_tblDatabaseInfo] CREATE TABLE [dbo].[Tmp_tblDatabaseInfo]( [ServerName] [nvarchar](128) NULL ,[DBName] [nvarchar](128) NULL ,[database_id] [int] NULL ,[create_date] datetime NULL ,[CompatibilityLevel] [int] NULL ,[collation_name] [nvarchar](128) NULL ,[state_desc] [nvarchar](60) NULL ,[recovery_model_desc] [nvarchar](60) NULL ,[DataFileLocations] [nvarchar](4000) ,[DataFilesMB] money null ,DataVolumeFreeSpaceMB INT NULL ,[LogFileLocations] [nvarchar](4000) ,[LogFilesMB] money null ,LogVolumeFreeSpaceMB INT NULL ) ON [PRIMARY] INSERT INTO [dbo].[Tmp_tblDatabaseInfo] SELECT @@SERVERNAME AS [ServerName] ,d.name AS DBName ,d.database_id ,d.create_date ,d.compatibility_level ,CAST(d.collation_name AS [nvarchar](128)) AS collation_name ,d.[state_desc] ,d.recovery_model_desc ,(select physical_name + ' | ' AS [text()] from sys.master_files m WHERE m.type = 0 and m.database_id = d.database_id ORDER BY file_id FOR XML PATH ('')) AS DataFileLocations ,(select sum(size) from sys.master_files m WHERE m.type = 0 and m.database_id = d.database_id) AS DataFilesMB ,NULL ,(select physical_name + ' | ' AS [text()] from sys.master_files m WHERE m.type = 1 and m.database_id = d.database_id ORDER BY file_id FOR XML PATH ('')) AS LogFileLocations ,(select sum(size) from sys.master_files m WHERE m.type = 1 and m.database_id = d.database_id) AS LogFilesMB ,NULL FROM sys.databases d WHERE d.database_id > 4 --Exclude basic system databases UPDATE [dbo].[Tmp_tblDatabaseInfo] SET DataFileLocations = CASE WHEN LEN(DataFileLocations) > 4 THEN LEFT(DataFileLocations,LEN(DataFileLocations)-2) ELSE NULL END ,LogFileLocations = CASE WHEN LEN(LogFileLocations) > 4 THEN LEFT(LogFileLocations,LEN(LogFileLocations)-2) ELSE NULL END ,DataFilesMB = CASE WHEN DataFilesMB > 0 THEN DataFilesMB * 8 / 1024.0 ELSE NULL END ,LogFilesMB = CASE WHEN LogFilesMB > 0 THEN LogFilesMB * 8 / 1024.0 ELSE NULL END ,DataVolumeFreeSpaceMB = (SELECT MBFree FROM #DriveInfo WHERE Drive = LEFT( DataFileLocations,1)) ,LogVolumeFreeSpaceMB = (SELECT MBFree FROM #DriveInfo WHERE Drive = LEFT( LogFileLocations,1)) select * from [dbo].[Tmp_tblDatabaseInfo]

qaru.site

sql-server - Список баз данных и табличное пространство в SQL Server 2014

Можно ли сделать все с помощью одного SQL-запроса?

IF OBJECT_ID('tempdb.dbo.#space') IS NOT NULL DROP TABLE #space CREATE TABLE #space ( database_id INT PRIMARY KEY , data_used_size DECIMAL(18,2) , log_used_size DECIMAL(18,2) ) DECLARE @SQL NVARCHAR(MAX) SELECT @SQL = STUFF(( SELECT ' USE [' + d.name + '] INSERT INTO #space (database_id, data_used_size, log_used_size) SELECT DB_ID() , SUM(CASE WHEN [type] = 0 THEN space_used END) , SUM(CASE WHEN [type] = 1 THEN space_used END) FROM ( SELECT s.[type], space_used = SUM(FILEPROPERTY(s.name, ''SpaceUsed'') * 8. / 1024) FROM sys.database_files s GROUP BY s.[type] ) t;' FROM sys.databases d WHERE d.[state] = 0 FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '') EXEC sys.sp_executesql @SQL IF OBJECT_ID('tempdb.dbo.#table') IS NOT NULL DROP TABLE #table CREATE TABLE #table ( database_id INT , obj_name NVARCHAR(1000) , total_rows INT , total_space DECIMAL(18,2) , used_space DECIMAL(18,2) , unused_space DECIMAL(18,2) , index_space DECIMAL(18,2) , data_space DECIMAL(18,2) ) SELECT @SQL = STUFF(( SELECT ' USE [' + d.name + '] INSERT INTO #table SELECT DB_ID() , s.name + ''.'' + o.name , i.total_rows , total_space = i.total_pages * 8. / 1024 , used_space = i.used_pages * 8. / 1024 , unused_space = (i.total_pages - i.used_pages) * 8. / 1024 , index_space = i.index_pages * 8. / 1024 , data_space = data_pages * 8. / 1024 FROM sys.objects o JOIN sys.schemas s ON o.[schema_id] = s.[schema_id] JOIN ( SELECT i.[object_id] , total_pages = SUM(a.total_pages) , used_pages = SUM(a.used_pages) , index_pages = SUM(a.used_pages - CASE WHEN a.[type] != 1 THEN a.used_pages WHEN p.index_id IN (0, 1) THEN a.data_pages ELSE 0 END) , data_pages = SUM(CASE WHEN a.[type] != 1 THEN a.used_pages WHEN p.index_id IN (0, 1) THEN a.data_pages END) , total_rows = SUM(CASE WHEN i.index_id IN (0, 1) AND a.[type] = 1 THEN p.[rows] END) FROM sys.indexes i JOIN sys.partitions p ON i.[object_id] = p.[object_id] AND i.index_id = p.index_id JOIN sys.allocation_units a ON p.[partition_id] = a.container_id WHERE i.is_disabled = 0 AND i.is_hypothetical = 0 GROUP BY i.[object_id] ) i ON o.[object_id] = i.[object_id] WHERE o.[type] = ''U'' AND o.is_ms_shipped = 0;' FROM sys.databases d WHERE d.[state] = 0 FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '') EXEC sys.sp_executesql @SQL SELECT d.name , t.total_size , t.data_size , s.data_used_size , t.log_size , s.log_used_size , tt.* FROM ( SELECT database_id , log_size = CAST(SUM(CASE WHEN [type] = 1 THEN size END) * 8. / 1024 AS DECIMAL(18,2)) , data_size = CAST(SUM(CASE WHEN [type] = 0 THEN size END) * 8. / 1024 AS DECIMAL(18,2)) , total_size = CAST(SUM(size) * 8. / 1024 AS DECIMAL(18,2)) FROM sys.master_files GROUP BY database_id ) t JOIN sys.databases d ON d.database_id = t.database_id LEFT JOIN #space s ON d.database_id = s.database_id LEFT JOIN #table tt ON t.database_id = tt.database_id ORDER BY t.total_size DESC, tt.total_space DESC

вывод -

name total_size data_size data_used_size log_size log_used_size database_id obj_name total_rows total_space used_space unused_space index_space data_space ---------------- ------------- ----------- ---------------- ----------- --------------- ----------- ---------------------- ----------- --------------- ------------- -------------- ------------- ----------------- StackOverflow 66339.88 65840.00 65102.06 499.88 4.94 24 dbo.Posts 21736594 49695.45 49452.38 243.08 157.95 49294.43 StackOverflow 66339.88 65840.00 65102.06 499.88 4.94 24 dbo.Comments 36585420 11879.19 11877.70 1.48 44.21 11833.49 StackOverflow 66339.88 65840.00 65102.06 499.88 4.94 24 dbo.Votes 67258370 2419.73 2419.38 0.35 9.03 2410.35 StackOverflow 66339.88 65840.00 65102.06 499.88 4.94 24 dbo.Badges 12783309 619.26 619.15 0.11 2.30 616.84 StackOverflow 66339.88 65840.00 65102.06 499.88 4.94 24 dbo.Users 3473095 411.78 410.66 1.12 1.53 409.13 StackOverflow 66339.88 65840.00 65102.06 499.88 4.94 24 dbo.PostLinks 2271053 72.76 72.70 0.05 0.28 72.42 StackOverflow 66339.88 65840.00 65102.06 499.88 4.94 24 dbo.LinkTypes 2 0.02 0.02 0.00 0.01 0.01 StackOverflow 66339.88 65840.00 65102.06 499.88 4.94 24 dbo.VoteTypes 15 0.02 0.02 0.00 0.01 0.01 StackOverflow 66339.88 65840.00 65102.06 499.88 4.94 24 dbo.PostTypes 8 0.02 0.02 0.00 0.01 0.01

qaru.site

Полный список часто используемых и полезных команд » Блог. ArtKiev Design Studio

Ежедневно разработчикам и администраторам приходится держать в памяти большое количество часто используемых команд. Кто-то ищет их в гугле, кто-то держит у себя в букмарках, кто-то написал "на коленке" себе программу для складирования нужных заметок. Для тех, кто все же ищет через поисковик мы собрали список часто используемых команд MySQL.

Полный список часто используемых и полезных команд:

Как войти в консоль MySQL:

# mysql –u user_name –puser_password или # mysql -hхост -u user_name -puser_password

 

Как задать пароль MySQL:

# mysqladmin -u root password 'passwd'

 

Как установить новый пароль для пользователя root:

mysql> UPDATE user SET Password=PASSWORD ('НОВЫЙ_ПАРОЛЬ') WHERE user='root';

 

Просмотр прав доступа в MySQL:

mysql> use mysql; Database changed mysql> select user,host,password from user;

 

Как создать новую базу в MySQL:

mysql> CREATE DATABASE `ИМЯ_БАЗЫ` CHARACTER SET utf8 COLLATE utf8_general_ci;

CHARACTER SET, COLLATE — Используется для задания стандартной кодировки таблицы и порядка сортировки.

 

Как создать нового пользователя и дать ему доступ к базе данных:

mysql> GRANT ALL PRIVILEGES ON `ИМЯ_БАЗЫ`.* TO 'ИМЯ_ПОЛЬЗОВАТЕЛЯ'@'localhost' IDENTIFIED BY 'user_password';

 

Как посмотреть настройки уже существующей базы данных MySQL:

mysql> SHOW CREATE DATABASE `db_name`;

 

Как удалить базу данных в MySQL:

mysql> DROP DATABASE db_name;

 

Как сделать дамп базы в MySQL:

# mysqldump --user=user_name --password=user_password db_name > /path_to_dump/dump.sql;

 

Как залить данные из дампа в MySQL:

# mysql -u user_name -puser_password -f db_name < /path_to_dump/dump.sql

 

Как скопировать данные из одной таблицы в другую в MySQL:

mysql> INSERT INTO `table_one` (id, parent_id, text) SELECT id, parent_id, option FROM `table_two`;

 

Как вывести список баз данных в MySQL, к которым пользователь имеет доступ:

mysql> SHOW DATABASES;

 

Как вывести список таблиц в MySQL, для выбранной базы:

mysql> show tables;

 

Как просмотреть структуры таблицы в MySQL:

mysql> DESCRIBE `table_name`;

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

artkiev.com

Исследуем базы данных с помощью T-SQL — AdminBD

Базовая информация

Во-первых, несколько простых @@Функций, которые предоставят нам базовую информацию.

-- Имена сервера и экземпляра &lt;br /&gt;Select @@SERVERNAME as [Server\Instance]; -- версия SQL Server Select @@VERSION as SQLServerVersion; -- экземпляр SQL Server &lt;br /&gt;Select @@ServiceName AS ServiceInstance; - Текущая БД (БД, в контексте которой выполняется запрос)Select DB_NAME() AS CurrentDB_Name;&lt;span data-mce-type="bookmark"&gt;​&lt;/span&gt;

-- Имена сервера и экземпляра &lt;br /&gt;Select @@SERVERNAME as [Server\Instance];

-- версия SQL Server Select @@VERSION as SQLServerVersion;

-- экземпляр SQL Server &lt;br /&gt;Select @@ServiceName AS ServiceInstance;

- Текущая БД (БД, в контексте которой выполняется запрос)Select DB_NAME() AS CurrentDB_Name;&lt;span data-mce-type="bookmark"&gt;​&lt;/span&gt;

Как долго ваш SQL Server работает после последнего перезапуска? Помните, что системная база данных tempdb пересоздаётся при каждом перезапуске SQL Server. Вот один из методов определения времени последнего перезапуска сервера.

SELECT @@Servername AS ServerName , create_date AS ServerStarted , DATEDIFF(s, create_date, GETDATE()) / 86400.0 AS DaysRunning , DATEDIFF(s, create_date, GETDATE()) AS SecondsRunnig FROM sys.databases WHERE name = 'tempdb'; GO

SELECT @@Servername AS ServerName ,

create_date AS ServerStarted ,

DATEDIFF(s, create_date, GETDATE()) / 86400.0 AS DaysRunning ,

DATEDIFF(s, create_date, GETDATE()) AS SecondsRunnig

FROM sys.databases

WHERE name = 'tempdb';

 

GO

 Связанные сервера

Связанные сервера – это соединения, позволяющие SQL Server’у обращаться к другим серверам с данными. Распределённые запросы могут быть запущенны на разных связанных серверах. Полезно знать – является ли ваш сервер баз данных изолированным от других, или он связан с другими серверами.

EXEC sp_helpserver; --OR EXEC sp_linkedservers; --OR SELECT @@SERVERNAME AS Server , Server_Id AS LinkedServerID , name AS LinkedServer , Product , Provider , Data_Source , Modify_Date FROM sys.servers ORDER BY name; GO

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

EXEC sp_helpserver;

 

--OR

 

EXEC sp_linkedservers;

 

--OR

 

SELECT @@SERVERNAME AS Server ,

Server_Id AS LinkedServerID ,

name AS LinkedServer ,

Product ,

Provider ,

Data_Source ,

Modify_Date

FROM sys.servers

ORDER BY name;

 

GO

Список всех баз данных

Во-первых, получим список всех баз данных на сервере. Помните, что на любом сервере есть четыре или пять системных баз данных (master, model, msdb, tempdb и distribution, если вы пользуетесь репликацией). Вы, вероятно, захотите исключить эти базы в следующих запросах. Очень просто увидеть список баз данных в SSMS, но, эти запросы будут нашими «строительными блоками» для более сложных запросов.

Есть несколько путей для получения списка всех БД на T-SQL и ниже вы увидите некоторые из них. Каждый метод возвращает похожий результат, но с некоторыми отличиями.

EXEC sp_helpdb; --OR EXEC sp_Databases; --OR SELECT @@SERVERNAME AS Server , name AS DBName , recovery_model_Desc AS RecoveryModel , Compatibility_level AS CompatiblityLevel , create_date , state_desc FROM sys.databases ORDER BY Name; --OR SELECT @@SERVERNAME AS Server , d.name AS DBName , create_date , compatibility_level , m.physical_name AS FileName FROM sys.databases d JOIN sys.master_files m ON d.database_id = m.database_id WHERE m.[type] = 0 -- data files only ORDER BY d.name; GO

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

EXEC sp_helpdb;

 

--OR

 

EXEC sp_Databases;

 

--OR

 

SELECT @@SERVERNAME AS Server ,

name AS DBName ,

recovery_model_Desc AS RecoveryModel ,

Compatibility_level AS CompatiblityLevel ,

create_date ,

state_desc

FROM sys.databases

ORDER BY Name;

 

--OR

 

SELECT @@SERVERNAME AS Server ,

d.name AS DBName ,

create_date ,

compatibility_level ,

m.physical_name AS FileName

FROM sys.databases d

JOIN sys.master_files m ON d.database_id = m.database_id

WHERE m.[type] = 0 -- data files only

ORDER BY d.name;

 

GO

Последний бэкап?

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

www.adminbd.ru

sql - Как сохранить список в столбце таблицы базы данных

Нет, нет лучшего способа сохранить последовательность элементов в одном столбце. Реляционные базы данных предназначены специально для хранения одного значения для каждой комбинации строк/столбцов. Чтобы сохранить более одного значения, вы должны сериализовать свой список в одно значение для хранения, а затем десериализовать его при извлечении. Другого способа делать то, о чем вы говорите, нет, потому что то, о чем вы говорите, это плохая идея, которая, как правило, никогда не будет выполнена).

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

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

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

В принципе, первое правило (или форма) нормализации утверждает, что ваша таблица должна представлять отношение. Это означает, что:

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

Последняя точка, очевидно, является главным моментом здесь. SQL предназначен для хранения ваших наборов для вас, а не для предоставления вам "ведра", чтобы вы сами хранили набор. Да, это возможно. Нет, мир не закончится. Тем не менее, вы уже научились понимать SQL и лучшие практики, которые идут вместе с ним, сразу же перейдя на использование ORM. LINQ to SQL - это фантастика, точно так же, как графические калькуляторы. В том же духе, однако, они не должны использоваться в качестве замены для того, чтобы знать, как работают эти процессы.

Теперь ваш список может быть полностью "атомарным", и это может не измениться для этого проекта. Но у вас, однако, будет привычка делать подобные вещи в других проектах, и вы, в конечном счете, (скорее всего, быстро) столкнетесь с сценарием, в котором вы теперь подгоняете свой быстрый n-легкий список в столбце когда это совершенно неуместно. Существует не так много дополнительной работы по созданию правильной таблицы для того, что вы пытаетесь сохранить, и вас не будут высмеивать другие разработчики SQL, когда они увидят ваш дизайн базы данных. Кроме того, LINQ to SQL увидит ваше отношение и автоматически предоставит вам подходящий объектно-ориентированный интерфейс. Почему бы вам отказаться от удобства, предлагаемого вам ORM, чтобы вы могли выполнять нестандартную и нелогичную хакерскую базу данных?

qaru.site

Создание базы данных в СУБД SQL Server.

⇐ ПредыдущаяСтр 52 из 55Следующая ⇒

Процесс создания базы данных в системеSQL Server состоит из двух этапов: создание собственно базы данных и её журнала транзакций. Данная информация размещается в соответствующих файлах, имеющих расширения *.mdf для базы данных, и *.ldf-для журнала транзакций. В файле базы данных записывается информация об основных её объектах – таблицах, индексах и т.д., а в файл журнала транзакций информация о процессе работы с транзакциями (контроль целостности данных, состояние базы данных до и посде транзакции).

Создание базы данных в системе SQL-Server может осуществляться следующими способами:

ü С помощью команды CREATE DATABASES;

ü С помощью утилиты SQL Server Enterprise Manager.

Для создания базы данных с помощью SQL Server Enterprise Manager на первом этапе необходимо выполнить некоторые настройки самой утилиты. Для этого, после её запуска, выберите в левом списке объектов группу SQL Server Group, в которой щёлкните на имени требуемого SQL-сервера. После этого, воспользовавшись командой Edit SQL Server Registration properties меню Action (Действие), установите соответствующие настройки подключения утилиты к данному SQL-серверу.

Server – с помощью этого выпадающего списка определяется база данных, для которой производятся настройки;

Use Windows NT authentication – при подключении утилиты к SQL-серверу в качестве имени и пароля пользователя передаются имя и пароль учётной записи пользователя в системе Windows NT;

Use SQL Server authentication – настройка имени и пароля пользователя SQL-сервера. При этом в поля Login Name и Password cледует ввести соответственно имя и пароль зарегистрированного пользователя SQL-сервера. Для повышения безопасности или в случае, когда компьютером, на который установлен SQL-сервер, пользуются несколько человек, можно установить опцию Always prompt for login and password, что позволит каждый раз при попытке подключения к SQL-серверу утилиты SQL Server Enterprise Manager запрашивать имя и пароль пользователя.

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

В SQL-сервере существуют определённые режимы ограничения доступа пользователей к информации, называемые ролями. При выборе Roles в группе объектов, будет показан перечень ролей, применимых для доступа пользователей к этой базе данных. Их перечень и краткое описание представлены в таблице 13.1.

Также в SQL-сервере существует перечень ролей доступа к объектам базы данных, используемых для всех объектов сервера. Их перечень и краткое описание представлены в таблице 36.1.

 

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

Роль Описание
db_owner Полный доступ к базе данных
db_accessadmin Возможность добавления и удаления пользователей
db_securityadmin Возможность управления всеми процессами доступа пользователей
db_ddladmin Выполнение всех команд DDL (Data definition language – язык определений), кроме GRANT, REVOKE или DENY
db_backupoperator Выполнение команд резервного копирования базы данных
db_datareader Возможность чтения всех данных из любых таблиц базы данных
db_datawriter Возможность изменения всех данных из любых таблиц базы данных
db_denydatareader Возможность ограничения доступа к объектам базы данных с использованием оператора SELECT
db_denydatawriter Возможность ограничения доступа к объектам базы данных с использованием оператора INSERT, UPDATE и DELETE
public Пользователи без представления специальных ролей обладают ролью доступа public

 

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

 

Роль Описание
sysadmin Выполнение любых функций SQL-сервера
serveradmin Настройка конфигурации и выполнение функций закрытия SQL-сервера
setupadmin Управление связями между серверами и их процедурами запуска
securityadmin Управление доступом, возможность создания баз данных, доступ к log-файлу ошибок
processadmin Управление процессами, выполняющимися в SQL-сервере
dbcreator Управление созданием и удалением баз данных
diskadmin Управление файлами на диске SQL-сервера

 

Для просмотра пользователей, имеющих доступ к созданной базе данных, имеется группа Users в списке объектов текущей базы данных. Единственным пользователем вновь созданной базы данных является dbo (Database Owner – владелец базы данных). Для просмотра установленных ему ролей необходимо воспользоваться следующими действиями:

ü Выберите группу Users;

ü Щёлкните мышью на имени пользователя dbo;

ü Из меню Action выберите команду Properties.

Результатом этих действий будет открытие диалогового окна установки ролей доступа к базе данных для пользователя dbo.

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

Создание таблиц

 

Создание таблиц в системе SQL Server можно осуществить с помощью команды SQL CREATE TABLE, подключившись к серверк базы данных с помощью утилиты SQL Server Query Analyser или воспользовавшись приложением SQL Server Enterprise Manager. Используя второй способ, нужно выбрать в списке объектов базы данных группу Tables, после чего в правой части утилиты SQL Server Enterprise Manager будет отображён список всех её таблиц, в том числе и системных. Щёлкнув правой кнопкой мыши по имени таблицы sysfiles, в контекстном меню нужно выбрать New Table. Утилита отобразит на экране окно дизайнера таблиц. В колонку Column Name необходимо будет ввести названия столбцов таблицы, определить типы данных, воспользовавшись колонкой Data Type. Здесь в выпадающем списке отображается перечень всех доступных типов данных, определённых в SQL-сервере.

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

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

Если ввод данных в создаваемое поле требует какого-либо значения, устанавливаемого по умолчанию, то его следует ввести в колонке Default Value окна дизайнера таблицы.

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

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

Другими словами, если возникает необходимость в добавлении к таблице поля, автоматически увеличивающего своё значение (например, поле-счётчик), то для него требуется настроить свойство Identity. Для этого в первую очередь в поле следует убрать флажок Allow Nulls, чтобы избежать неопределённости информации. Следующим шагом будет установка флажка в поле Identity, после чего требуется ввести начальное значение Identity Seed и значение-инкремент Identity Increment (добавляемая сумма).

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

Следующим этапом разработки структуры базы данных будет внесение информации в созданные таблицы. Для изменения содержимого таблиц с помощью утилиты SQL Server Enterprise Manager необходимо выполнить следующие действия:

ü Выбрать требуемую таблицу в списке;

ü Выполнить команду Open Table | Return all rows меню Action;

ü Если в таблице находится слишком много записей, то можно ограничить выбор, воспользовавшись командой Open Table | Return Top меню Action. В этом случае на экран будет выведено диалоговое окно, в котором необходимо будет ввести номер записи, с которой требуется осуществлять просмотр и редактирование данных.

Результатом выполнения этих действий будет открытие редактора таблицы утилиты SQL Server Enterprise Manager. При установке курсора в поле новой записи она будет автоматически добавлена. Система автоматически проверяет ввод информации на соответствие типу данных полей.

Установка первичного ключа осуществляется с помощью кнопки Set Primary Key. Для соответствующих полей необходимо установить обязательный ввод значений в это поле, т.е. убрать флажок из колонки Allow Nulls для этого поля.

Для создания индексов определённой таблицы базы данных SQL-сервера можно воспользоваться одним из следующих способов:

ü Создать индекс с помощью SQL-команды CREATE INDEX;

ü Воспользоваться возможностями утилиты SQL Server Enterprise Manager.

mykonspekts.ru