SQL Server 2005升级到SQL Server 2012

冰峰zoubf 2012-05-21 09:41:12
如题,要升级后,用以前写好的2005版的存储过程都有哪些语法要修改?
2012不兼容2005的一览哪里能找到?
...全文
4820 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Shawn 2013-08-02
  • 打赏
  • 举报
回复
从2005导出所有存储过程脚本,在2012中执行一下,即可知道是否有语法错误。
ali_mushishi 2013-08-02
  • 打赏
  • 举报
回复
引用 1 楼 ap0405140 的回复:
升级后,数据库的兼容等级仍设为90.
三百君 你好犀利的样子
  • 打赏
  • 举报
回复
弄个虚机安装测试一下嘛。 基本上是不会有问题的。测试也是必须的!
andrew_cxj 2013-05-30
  • 打赏
  • 举报
回复
2008升级2012~修改了存储过程和触发器的错误提示格式~ raiserror 20003 '错误提示!' raiserror ("错误提示 ",1,1) 只知道需要改这个~
leonlgw 2012-12-08
  • 打赏
  • 举报
回复
绝大部分没有问题,运行一下升级向导看看
KevinLiu 2012-09-15
  • 打赏
  • 举报
回复
使用升级向导跑一次看看有没有问题,但是最好还是先在测试环境。

升级完成后记得更新统计信息,dbcc updateusage,DBCC CHECKDB
lizhao861018 2012-08-14
  • 打赏
  • 举报
回复
SQL Server 2012 中废止的数据库引擎功能
本主题介绍 SQL Server 2012 中不再可用的数据库引擎功能。

类别
已不再使用的功能
替代功能

Backup 和 Restore
BACKUP { DATABASE | LOG } WITH PASSWORD 和 BACKUP { DATABASE | LOG } WITH MEDIAPASSWORD 已不再使用。 RESTORE { DATABASE | LOG } WITH [MEDIA]PASSWORD 继续不推荐使用。


Backup 和 Restore
RESTORE { DATABASE | LOG } … WITH DBO_ONLY
RESTORE { DATABASE | LOG } … … WITH RESTRICTED_USER

兼容级别
80 兼容级别
必须将数据库的兼容级别至少设置为 90。

配置选项
sp_configure 'user instance timeout' 与'user instances enabled'
使用本地数据库功能。 有关详细信息,请参阅 SqlLocalDB 实用工具。

连接协议
不再支持 VIA 协议。
请改用 TCP。

数据库对象
有关触发器的 WITH APPEND 子句
重新创建整个触发器。

数据库选项
sp_dboption
ALTER DATABASE

邮件
SQL Mail
使用数据库邮件。 有关详细信息,请参阅数据库邮件和使用数据库邮件而不是 SQL Mail。

内存管理
32 位地址窗口化扩展插件 (AWE) 和 32 位热添加内存支持。
使用 64 位操作系统。

元数据
DATABASEPROPERTY
DATABASEPROPERTYEX

可编程性
SQL Server 分布式管理对象 (SQL-DMO)
SQL Server 管理对象 (SMO)

查询提示
FASTFIRSTROW 提示
OPTION (FAST n)。

远程服务器
用户通过 sp_addserver 创建新的远程服务器的功能已停止使用。 带有“local”选项的 sp_addserver 保持可用。 可以使用在升级过程中保留或由复制创建的远程服务器。
用链接服务器替代远程服务器。

安全性
sp_dropalias
请将别名替换为用户帐户和数据库角色的组合。 请使用 sp_dropalias 删除已升级数据库中的别名。

安全性
表示来自早于 SQL Server 2000 的登录值的 PWDCOMPARE 的版本参数不再使用。


SMO 中的 Service Broker 可编程性

Microsoft.SqlServer.Management.Smo.Broker.BrokerPriority 类不再实现 Microsoft.SqlServer.Management.Smo.IObjectPermission 接口。


SET 选项
SET DISABLE_DEF_CNST_CHK
无。

系统表
sys.database_principal_aliases
请使用角色而不是别名。

Transact-SQL
格式为 RAISERROR integer 'string' 的 RAISERROR 不再使用。
请使用当前的 RAISERROR(…) 语法重写语句。

Transact-SQL 语法
COMPUTE / COMPUTE BY
使用 ROLLUP

Transact-SQL 语法
*= 和 =* 用法
使用 ANSI 联接语法。 有关详细信息,请参阅 FROM (Transact-SQL).

XEvents
databases_data_file_size_changed、databases_log_file_size_changed

eventdatabases_log_file_used_size_changed

locks_lock_timeouts_greater_than_0

locks_lock_timeouts
替换为 database_file_size_change event、database_file_size_change

database_file_size_change 事件

lock_timeout_greater_than_0

lock_timeout


其他 XEvent 更改

resource_monitor_ring_buffer_record:

删除的字段:single_pages_kb、multiple_pages_kb

添加字段:target_kb,pages_kb

memory_node_oom_ring_buffer_recorded:

删除的字段:single_pages_kb、multiple_pages_kb

添加的字段:target_kb、pages_kb


参考:http://technet.microsoft.com/zh-cn/windows/ms144262(v=sql.100)
筱筱澄 2012-07-23
  • 打赏
  • 举报
回复
先进
發糞塗牆 2012-07-23
  • 打赏
  • 举报
回复
如果你保证是完全2005的语法,那么升级到2012是没必要修改的。其实绝大部分语法都是可以使用的,只是一些比如*=或者使用了系统表、系统存储过程等等而已。
zhazhuzhao 2012-07-23
  • 打赏
  • 举报
回复
不修改兼容级别,好像升级了也是白升级吧!
houyajin 2012-06-04
  • 打赏
  • 举报
回复
我是过来学习的
叶子 2012-06-04
  • 打赏
  • 举报
回复
整体来讲还是向下兼容的,你可以参考一下08 和08R2的废弃功能列表。
mabaoyes 2012-06-01
  • 打赏
  • 举报
回复
拿你的存储过程一个个检验!
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

升级后,数据库的兼容等级仍设为90.
[/Quote]

Q315054403 2012-05-22
  • 打赏
  • 举报
回复
实践是唯一标准。。。搞个PC测试一下不就OK了么。。
Mr_Nice 2012-05-21
  • 打赏
  • 举报
回复
向下还是兼容的。
像楼上说的,不修改兼容级别即可。
唐诗三百首 2012-05-21
  • 打赏
  • 举报
回复
升级后,数据库的兼容等级仍设为90.

6,129

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 新技术前沿
社区管理员
  • 新技术前沿社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧