如何获取当前数据库名称及在存储过程中临时设置数据库兼容级别
来源:互联网 发布:vr家装软件 编辑:程序博客网 时间:2024/05/31 18:44
场景:在大量的DB操作过程中, 有许多数据库本来是SQL Server 2005 , 但其兼容级别设置为了80(2000), 导致很多操作无法进行(比如, 表值函数里用字段参数)。 如何操作呢?
直接将兼容级别改过来, 还是不大好, 万一影响了其它方面罪过就大了。
基本知识:
--查看所有数据库的兼容级别SELECT name,compatibility_level FROM sys.databases WITH(NOLOCK)--修改数据库的兼容级别EXEC sp_dbcmptlevel 'dbName', '80'--查看当前数据库名称和兼容级别sp_who @@spid SELECT NAME,cmptlevel From Master..SysDataBases Where DbId=(Select Dbid From Master..SysProcesses Where Spid = @@spid)
实际操作
--1. 取得当前 DB 名称, 当前的级别DECLARE @currDBName VARCHAR(500),@oldLevel VARCHAR(10)SELECT @currDBName = NAME,@oldLevel=cmptlevel From Master..SysDataBases Where DbId=(Select Dbid From Master..SysProcesses Where Spid = @@spid)--2. 将当前级别改为 90 (2005)EXEC sp_dbcmptlevel @currDBName, '90'--3. 处理需要在 90 下的任务----4. 改回原来的级别EXEC sp_dbcmptlevel @currDBName,@oldLevel
- 如何获取当前数据库名称及在存储过程中临时设置数据库兼容级别
- 您可能需要将当前数据库的兼容级别设置为更高的值,以启用此功能。有关存储过程 sp_dbcmptlevel 的信息,请参见帮助。
- 如何判断当前数据库在执行那些存储过程
- 获取当前数据库的名称
- 在JDBC中如何设置当前时间到数据库
- 在JDBC技术中如何使用存储过程(SQLSERVER数据库
- 需要将当前数据库的兼容级别设置为更高的值
- 在数据库中获取当前时间
- 存储过程在数据库中测试
- 如何在数据库中使用存储过程 【数据库高效编程 - 学习笔记 第九章】
- SQL查看当前数据库中所有存储过程
- [SQL] 如何获取数据库视图中所有列的名称
- 如何获取数据库中所有表的名称
- 您可能需要将当前数据库的兼容级别设置为更高的值,以启用此功能
- 在存储过程中使用临时表
- 在存储过程中创建临时表
- [5月3日的脚本] 如何获取某指定数据库中所有的存储过程
- SQL SERVER如何获取指定数据库中所有存储过程的参数
- 7月份浏览器份额:IE仍最受欢迎 Chrome成最大赢家
- 设置 Linux 的 LD_LIBRARY_PATH 变量
- IOS中Json解析的四种方法
- ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- 如何获取当前数据库名称及在存储过程中临时设置数据库兼容级别
- iOS多线程编程之NSThread的使用
- 负载均衡,会话保持,session同步
- 系统激活博客
- Launcher源码初探 转载
- mysql游标
- qt
- android2.3.5中阿拉伯文字符显示顺序不是从右至左显示
- 如何使用sublime编辑器运行python程序