Azure数据库:如果不存在则创建表格。
Azure数据库:如果不存在则创建表格。
我已经看到了关于Microsoft SQL Server的“如果不存在则创建表”的问题的答案(例如,CREATE TABLE IF NOT EXISTS equivalent in SQL Server)。
然而,这种方法在Azure数据库上不起作用-我不确定是否无法访问sysobjects或信息模式,但我找不到一种可靠的方法来确定表是否已经被创建,如果没有,再创建该表。这似乎需要访问master才能正常工作。
当我在Azure上尝试这个查询(来自上述链接中的解决方案)时,它失败了:
if not exists (select * from sysobjects where name='cars' and xtype='U') create table cars ( Name varchar(64) not null ) go
错误:
Msg 262, Level 14, State 1, Line 2 CREATE TABLE permission denied in database 'master'.
有没有办法在Azure上实现这个功能?
在Azure中,无法在master数据库中创建表。请创建一个数据库并在其中运行您的创建表脚本。
我已经在Azure上有一个数据库。我需要查看其中是否存在一个表,如果不存在,则创建它。
您没有连接到该数据库,而是连接到master数据库。请连接到您想要表所在的数据库。在SQL Azure中,您无法执行跨数据库查询。
我已连接到我的数据库。当我打开SSMS时,我连接到Azure中数据库实例中显示的服务器名称。如果我尝试执行 'USE [数据库名称]',它会失败,并显示 'Msg 40508, Level 16, State 1, Line 1 USE statement is not supported to switch between databases. Use a new connection to connect to a different database.'。
从SSMS中,从下拉菜单中选择您的用户数据库。SSMS将在幕后为您创建一个新的连接。
明白了 - 现在从SSMS中可以运行查询了。我会将_MSFT的答案标记为已接受。感谢Dan的解释!