一、数据库连接
在使用MSSQL Server 进行管理之前,首先必须建立与数据库的连接。以下是建立连接的基本方式之一:
USE master;
GO
EXEC sp_addlinkedserver
@server = '服务器名', -- 替换为实际的服务器名
@srvproduct= '',
@provider = 'SQLNCLI',
@datasrc = '目标服务器名'; -- 替换为实际的目标服务器名
GO
使用sp_addlinkedserver存储过程可以连接到其他的数据库服务器上,也可以连接到同一台服务器上的其他实例上。
1. 认证方式选择
连接数据库时需要指定认证方式,默认为Windows身份验证(即Windows Authentication),也可以选择SQL Server验证(即SQL Server Authentication)。
Windows身份验证是以当前操作系统登录的用户身份来验证访问MSSQL Server的权限,适用于仅需要本地访问的情况;
SQL Server身份验证则是指使用自定义的用户名和密码来访问MSSQL Server的权限。它适用于在本地或远程系统上使用应用程序的情况,也适合多个用户使用相同的身份验证方式进行远程访问的情况。
在使用SQL Server验证方式进行数据库连接时需要指定用户名和密码。
USE master;
GO
EXEC sp_addlinkedsrvlogin
@rmtsrvname = '服务器名', -- 替换为实际的服务器名
@useself = 'false',
@locallogin = NULL,
@rmtuser = '用户名', -- 替换为实际的用户名
@rmtpassword = '密码'; -- 替换为实际的密码
GO
使用sp_addlinkedsrvlogin存储过程可以添加与其他服务器的连接的登录信息。
2. 连接多个数据库
除了连接到单个数据库之外,还可以连接多个数据库。在使用多个数据库时,需要先连接到master数据库,然后再连接到其他数据库。
USE master;
GO
EXEC sp_addlinkedserver
@server = '服务器1', -- 替换为实际的服务器名
@srvproduct= '',
@provider = 'SQLNCLI',
@datasrc = '目标服务器1'; -- 替换为实际的目标服务器名
EXEC sp_addlinkedserver
@server = '服务器2', -- 替换为实际的服务器名
@srvproduct= '',
@provider = 'SQLNCLI',
@datasrc = '目标服务器2'; -- 替换为实际的目标服务器名
GO
为了实现跨服务器的查询,可以使用以下语句:
SELECT *
FROM [服务器1].[database1].[dbo].[table1] t1
JOIN [服务器2].[database2].[dbo].[table2] t2
ON t1.id = t2.id;
GO
使用两个方括号括住服务器名、数据库名和表名是连接多个数据库的一种方式。
二、数据库备份与还原
1. 备份数据库
MSSQL Server 提供了多种备份方式,可以进行完整备份、差异备份或日志备份。
以下是进行完整备份的基本语法:
BACKUP DATABASE dbname
TO DISK = '备份路径\dbname_full.bak'
WITH INIT;
使用BACKUP DATABASE语句可以备份数据库,TO DISK选项可以指定备份文件路径和名称。
使用WITH INIT选项可以覆盖以前的备份文件,如果没有这个选项,则备份文件将追加到当前备份集中。
2. 还原数据库
以下是还原MSSQL Server中数据库的基本语法:
RESTORE DATABASE dbname
FROM DISK = '备份路径\dbname_full.bak'
WITH REPLACE;
使用RESTORE DATABASE语句可以从备份文件中还原数据库,FROM DISK选项可以指定备份文件路径和名称。
使用WITH REPLACE选项可以覆盖当前数据库,如果没有这个选项,则还原操作将被取消。
三、数据库维护
1. 压缩数据库
MSSQL Server中的压缩操作有助于减少磁盘空间的使用,并且可以提高查询性能。
以下是对数据库表进行压缩的基本语法:
ALTER TABLE <tablename> REBUILD WITH (DATA_COMPRESSION = ROW);
使用ALTER TABLE语句可以对指定的数据库表进行重建操作,并且可以通过DATA_COMPRESSION选项指定压缩类型。
2. 检查数据库的一致性
在MSSQL Server中,可以使用DBCC CHECKDB命令来检查数据库的一致性。
以下是检查数据库一致性的基本语法:
DBCC CHECKDB (dbname) WITH NO_INFOMSGS;
使用DBCC CHECKDB命令可以检查指定的数据库,并且可以使用WITH NO_INFOMSGS选项禁止输出信息。
另外,还可以通过DBCC CHECKALLOC、DBCC CHECKCATALOG、DBCC CHECKFILEGROUP等命令来检查数据库的其他方面。
四、数据库查询
1. 查询数据表
以下是查询MSSQL Server中数据表的基本语法:
SELECT * FROM tablename;
使用SELECT语句可以查询指定的数据表(tablename),并且可以使用通配符*来返回所有列。
2. SQL查询优化
频繁的查询操作可能会导致性能下降,因此建议尽可能使用索引来提高查询性能。
以下是创建索引的基本语法:
CREATE INDEX idx_tablename_colname
ON tablename (colname);
使用CREATE INDEX语句可以创建索引,其中的idx_tablename_colname为索引名称,tablename为数据表名称,colname为要索引的列名。
3. 存储过程
存储过程是一组预编译的SQL查询或命令,可以在MSSQL Server中进行存储、创建、维护和管理,它具有更高的安全性和更高的性能。
以下是创建存储过程的基本语法:
CREATE PROC [dbo].[sp_test]
AS
BEGIN
SELECT * FROM tablename
END
存储过程可以带参数,以下是带有参数的存储过程:
CREATE PROC [dbo].[sp_test1]
@id INT
AS
BEGIN
SELECT * FROM tablename WHERE id = @id
END
使用CREATE PROC语句可以创建存储过程,其中[dbo]为数据库架构,sp_test为存储过程名。
五、用户与角色
1. 创建用户
MSSQL Server中可以创建本地或远程用户,并进行身份验证和授权操作。
以下是创建本地用户的基本语法:
CREATE LOGIN username
WITH PASSWORD = 'password',
CHECK_POLICY=OFF;
使用WITH PASSWORD选项可以指定用户密码,CHECK_POLICY选项可以关闭密码复杂度检查。
2. 创建角色
MSSQL Server中可以创建角色,在角色中为用户或其他角色分配权限。
以下是创建角色的基本语法:
CREATE ROLE rolename;
使用CREATE ROLE语句可以创建角色,其中rolename为角色名称。
3. 授权给用户或角色
在MSSQL Server中,可以将权限赋予已存在的用户或角色。
以下是赋予权限的基本语法:
GRANT SELECT ON tablename TO username;
使用GRANT语句可以将表或其他对象的权限授予其他用户或角色。
六、日志管理
1. 查看日志
在MSSQL Server中,可以查看数据库的日志以了解先前发生的事件。
以下是查看日志的基本语法:
SELECT * FROM sys.fn_dblog(NULL,NULL);
使用sys.fn_dblog函数可以通过查看日志来了解数据库上的先前事件。
2. 清空日志
定期清空日志可以帮助维护数据库性能。
以下是清空日志的基本语法:
BACKUP LOG dbname WITH TRUNCATE_ONLY
使用BACKUP LOG语句可以备份事务日志,并使用WITH TRUNCATE_ONLY选项清空日志。
七、性能监测
1. 监测SQL运行性能
在MSSQL Server中,可以使用系统监测工具来监测SQL的运行性能。
以下是使用系统监测工具监测SQL运行性能的基本语法:
SELECT
TotalElapsedTime/execution_count 'AvgElapsedTime',
execution_count,
TotalElapsedTime,
TotalLogicalReads,
TotalLogicalReads/execution_count 'AvgLogicalReads',
TotalLogicalWrites,
TotalLogicalWrites/execution_count 'AvgLogicalWrites',
sql_handle,
statement_start_offset,
statement_end_offset,
plan_handle,
query_plan
FROM
sys.dm_exec_query_stats sqs
CROSS APPLY
sys.dm_exec_sql_text(sqs.sql_handle) st
CROSS APPLY
sys.dm_exec_query_plan(sqs.plan_handle) qp
ORDER BY TotalElapsedTime DESC;
使用sys.dm_exec_query_stats和相关的函数和视图可以监控SQL的运行性能。
2. 监测系统性能
在MSSQL Server中,可以使用系统监视器来监测系统性能。
以下是使用系统监视器监测系统性能的基本语法:
SELECT * FROM sys.dm_os_performance_counters;
使用sys.dm_os_performance_counters视图可以监测系统性能。
八、总结
本文简要介绍了MSSQL Server管理中常用的语句和操作。通过正确地使用这些语句,可以更好地管理和维护MSSQL Server,提高数据库性能和安全性。希望通过本文的介绍,读者能够学习到一些有用的技能和知识。