用SSMS连接Azure Sql Database 与连接本地库的一些操作区别

背景

我们知道Azure Sql Database 可以降低运维成本、是一种Pass模式,有资源弹性设置,可以自由调整资源自动对应不同业务高峰(当然也可以降低费用成本),也方便项目后期的资源扩展,以及一些其他优点或特性,这就不一一列出。那么数据库开发工程师来说,操作Azure Sql Database 与我们使用的SSMS(Microsoft Sql Server Management Studio)在本地库上操作有哪些区别。

我们简单从如下几部分进行比较

1.创建对象比较;(简单列一下Azure 上创建数据库操作,SSMS创建数据库默认省略)

2.连接库比较;

3.操作比较;

1.创建对象比较

 

 

 

 

 

 

 

2.链接库的比较

通过上述图可以看到,在azure sql database 中涉及到实例一级的对象都是没有了。

在azure sql database大概总结如下:

1.没有 AlwaysON,没有数据库镜像,没有日志传送,没有复制。 有异地复制可以直接添加数据库辅助副本(库大小是指数据文件大小);

2.没有 agent ;如需执行定时调度可以参考《通过本地Agent监控Azure_sql_database》

3.没有SSIS;

4.不支持实例一级的对象(如不支持全局临时表、没有Profiler等);如需监控可以参考《如何在Azure sql database 下监控正在运行的脚本或某个存储过程是否已运行》

3.具体操作方面比较

 

 通过上图发现azure sql database系统数据库中没有tempdb,那能否使用临时表之类的对象?

首先查看当前的azure sql database 版本号

 测试临时表(不是sql server 2016 temporal table)

 

可以使用临时表,不支持使用全局的临时表。

 Pass模式下,某些命令已不支持。

 注意默认的getdate()是UTC时间,与北京时间相差8小时。

 不能在本库显式调用其他库,如:use master

默认情况下,azure sql database 不支持跨库操作,需要创建扩展表,建同构同名的表,只能是只读且架构唯一。如要存储过程进行跨库操作,需使用sp_execute_remote调用。

ssms 2012界面下存储过程点右键如下图:

SSMS 2016界面下存储过程点右键如下图:

UI界面操作,建议安装最新版本SSMS.或者 exec sp_helptext 加具体的存储过程名称,执行,把执行结果拷出才是存储过程的脚本;

参考资料

如何创建扩展表

sp_execute_remote

总结

azure sql database 与ssms相比:

1.没有 AlwaysON,没有数据库镜像,没有日志传送,没有复制。 有异地复制可以直接添加数据库辅助副本(库大小是指数据文件大小);

2.没有 agent ;如需执行定时调度可以参考《通过本地Agent监控Azure sql database》

3.没有SSIS;

4.不支持实例一级的对象(例如不支持全局变量、没有Profiler等);如需监控可以参考《如何在Azure sql database 下监控正在运行的脚本或某个存储过程是否已运行》

5.有些命令不支持,因azure sql database 是Pass模式;

6.注意默认getdate()是取UTC时间,与北京时间相差8小时;

7.不能在本库显式调用其他库;

8.默认情况下,azure sql database 不支持跨库操作,需要创建扩展表,建同构同名的表,只能是只读且架构唯一;

9.azure sql database 是基于v12的引擎,要在UI界面上操作建议安装ssms 2016版操作。

10.用户名限制,不能使用admin\administrator\sa\guest\root

相关推荐