Azure数据库:如果不存在则创建表格。

10 浏览
0 Comments

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上实现这个功能?

0
0 Comments

在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的解释!

0