SQLServer实用技巧.docx
### SQLServer实用技巧知识点 #### 一、解决安装时提示有挂起的操作 在安装SQL Server过程中遇到“有挂起的操作”提示时,这通常是因为系统中存在未完成的安装或者更新任务。解决方法通常涉及以下几个步骤: 1. **清理挂起的操作**:通过命令行工具或控制面板的应用程序卸载功能,尝试移除任何未完成的SQL Server组件。 2. **重启安装程序**:确保所有SQL Server相关的服务都已停止,然后重新启动安装向导。 3. **手动清理注册表**:在确保备份了注册表的前提下,手动删除与SQL Server安装相关的键值。 #### 二、收缩数据库 数据库的收缩是为了释放不再需要的空间。这可以通过以下两种方式实现: 1. **文件收缩**:针对具体的数据文件或日志文件进行空间释放。 - 打开SQL Server Management Studio (SSMS),连接到目标数据库实例。 - 展开数据库节点,找到需要收缩的数据库。 - 右键点击数据库,选择“任务” > “收缩” > “文件”。 - 在弹出的窗口中选择需要收缩的文件类型,设置收缩的目标百分比。 2. **自动收缩**:设置数据库为自动收缩模式,但不推荐频繁使用此方法,因为它可能导致性能下降。 #### 三、压缩数据库 压缩数据库是指减少数据库所占用的磁盘空间。SQL Server支持通过压缩数据页来达到这一目的: - 使用`ALTER DATABASE`语句,指定`MODIFY FILE`选项,并使用`SET`子句来配置文件的压缩属性。 #### 四、转移数据库给新用户以已有用户权限 将数据库的所有权转移给新的用户,同时保留原用户的权限: 1. **更改所有权**:使用`ALTER AUTHORIZATION`语句更改数据库对象的所有权。 2. **复制权限**:手动复制所需的权限给新用户,确保新用户拥有必要的访问权限。 #### 五、检查备份集 检查备份集的完整性和有效性,以确保在恢复时不会出现问题: - 使用`RESTORE VERIFYONLY`语句来验证备份文件的有效性。 #### 六、修复数据库 当数据库出现损坏时,可以使用以下几种方法进行修复: 1. **使用DBCC CHECKDB**:该命令用于检查数据库的物理一致性,并可选地进行修复。 - `DBCC CHECKDB (dbname) WITH NO_INFOMSGS, REPAIR_ALLOW_DATA_LOSS` 2. **使用DBCC CHECKFILEGROUP**:检查文件组的完整性。 3. **使用DBCC CHECKTABLE**:检查特定表的完整性。 #### 七、SQLServer2008删除堵塞进程 - **列出全部当前进程**:使用`sp_who`存储过程列出所有当前的进程。 ```sql use master go exec sp_who go ``` - **列出特定用户的进程**:通过指定用户名来过滤结果。 ```sql use master go exec sp_who 'sa' go ``` - **显示所有活动进程**:只显示那些处于活动状态的进程。 ```sql use master go exec sp_who 'active' go ``` - **显示会话ID标识的特定进程**:通过会话ID来查看某个特定进程。 ```sql use master go exec sp_who '10' go ``` - **删除阻塞的进程**:通过`KILL`命令终止阻塞的进程。 ```sql use master go kill 10 //blk列 go ``` #### 八、简洁查询正在运行的进程 为了更简洁地获取正在运行的进程信息,可以使用以下查询: ```sql SELECT spid, blocked, DB_NAME(sp.dbid) AS DBName, program_name, waitresource, lastwaittype, sp.loginame, sp.hostname, a.Text AS TextData, SUBSTRING(A.text, sp.stmt_start/2, (CASE WHEN sp.stmt_end=-1 THEN DATALENGTH(A.text) ELSE sp.stmt_end END - sp.stmt_start)/2) AS [current_cmd] FROM sys.sysprocesses AS sp OUTER APPLY sys.dm_exec_sql_text(sp.sql_handle) AS A WHERE spid > 50 ORDER BY blocked DESC, DB_NAME(sp.dbid) ASC, a.Text; ``` #### 九、查找对象 - **查找当前库中所有的触发器和与之相对应的表**: ```sql SELECT tb2.name AS tableName, tb1.name AS triggerName FROM Sysobjects tb1 JOIN Sysobjects tb2 ON tb1.parent_obj = tb2.id WHERE tb1.type = 'TR'; ``` - **查找含有指定内容的对象**: ```sql SELECT DISTINCT object_name(id), text FROM syscomments WHERE id IN (SELECT object_id FROM sys.objects WHERE name LIKE '%指定内容%'); ``` 以上就是从给定文件中提取的关键知识点。这些技巧对于日常维护和管理SQL Server数据库非常有用。通过熟练掌握这些技能,可以有效提高数据库的性能和稳定性。
剩余23页未读,继续阅读
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助