SQL Server 常见问题 FAQ

修改 SQL Server 2012 共享功能目录

问题描述:因为安装了 Visual Studio 导致安装数据库共享目录变成灰色,不能修改。
修改方法:通过安装包正常安装,【准备安装】可以找到【配置文件路径】找到 ConfigurationFile.ini 文件路径,打开 ConfigurationFile.ini 文件直接修改配置文件内容。例如:C:\Program Files\Microsoft SQL Server\110\Setup Bootstrap\Log\20150306_022030\ConfigurationFile.ini
解决问题:减少C盘的空间消耗。

解决 System.Data.SqlClient.SqlError 错误

问题一描述:SQL Server数据库备份还原后,在数据库名称后会出现“受限制访问”字样;
问题二描述:在对 SQL Server 数据库进行还原时,提示:System.Data.SqlClient.SqlError:因为数据库正在使用,所以无法获得对数据库的独占访问权。(Microsoft.SqlServer.Smo)。出现此问题的原因是在还原数据库时,有其他用户正在使用数据库。还原数据库要求数据库工作在单用户模式。通常就是DBA在操作时,不允许其他用户连接数据库。

问题一解决办法:
右键点击数据库 -> 属性 -> 选项 -> 状态 -> 限制访问 -> 选择Multiple -> 确定。

    1. ---设置数据库为多用户模式
    2. USE MASTER
    3. GO
    4. ALTER DATABASE ESApp1 SET MULTI_USER WITH ROLLBACK IMMEDIATE;
    5. GO

问题二解决办法:
方法一(最方便):右键点击数据库 -> 属性 -> 选项 -> 状态 -> 限制访问 -> 选择Single-> 确定,然后还原。 设置单用户数据库必须要超级用户。

  1. ---设置数据库为单用户模式
  2. USE MASTER
  3. GO
  4. ALTER DATABASE ESApp1 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
  5. GO

方法二(最直接):断开数据库连接
方法三(最暴力):注销/重启数据库服务器
方法四(最麻烦):写代码修改数据库相关属性,虽然麻烦,有的时候还是要用到,那就用到的时候再研究。
方法五(终级解决方案):

关键SQL语句:
ALTER DATABASE [datebase] SET OFFLINE WITH ROLLBACK IMMEDIATE
还原之后再 :
ALTER database [datebase] set online

方法六:使用T-Sql的方式,执行备份数据库操作。

  1. use master
  2. go
  3. ---声明变量(备份ESApp1数据库)
  4. declare @dbName nvarchar(max)='ESApp1';
  5. declare @dbFullName nvarchar(max)='E:\NewWork\Web\backup\test1.bak';
  6. --1.1修改为单用模式
  7.     exec(N'ALTER DATABASE '+@dbName+' SET SINGLE_USER WITH ROLLBACK IMMEDIATE');
  8. --1.2结束链接进程
  9.     DECLARE @kid varchar(max)
  10.     SET @kid=''
  11.     SELECT @kid=@kid+'KILL '+CAST(spid as Varchar(10))  FROM master..sysprocesses
  12.     WHERE dbid=DB_ID(@dbName)  ;
  13.     EXEC(@kid) ;
  14. --2.执行还原语句
  15.    restore database @dbName from  disk=@dbFullName
  16.    with replace  --覆盖现有的数据库
  17. --3.重置数据库为多用户模式
  18.  exec(N'ALTER DATABASE '+@dbName+' SET MULTI_USER WITH ROLLBACK IMMEDIATE');

作者: Hugh

Welcome to Wan's world~