0

我正在尝试编写一个 MS SQL 语句来获取一行。

SELECT otherfields, phantom_col FROM mytable WHERE id=5

上面的 SQL 失败并出现错误:

Msg 207 Level 16 Stage 1, Line XX
invalid column name 'phantom_col'.

我加载了 SQL Management Studio 2008 R2 并连接到上述数据库和表并执行“选择前 1000 行”以获取自动生成的 SQL。表明:

SELECT TOP 1000 [otherfields], [phantom_col] FROM [mydatabase].[dbo].[mytable]

然后我删除了读取[mydatabase]并立即 SQL Management Studio 告诉我[phantom_col]无效的部分。

那是什么特殊的专栏phantom_col?严格来说,如果我省略了冗长的[].[]符号,我的 SQL 语法仍然正确吗?

编辑:我终于仔细看了看,并意识到有一条错误消息。编辑如上。

4

1 回答 1

1

你的语法是正确的。错误,因为您尚未连接到 myDatabse

你也可以用这个

USE mydatabase
GO
SELECT TOP 1000 phantom_col 
FROM myTable

当 SQL Server 登录连接到 SQL Server 时,登录会自动连接到其默认数据库并获取数据库用户的安全上下文。如果没有为 SQL Server 登录创建数据库用户,则登录以访客身份连接。如果数据库用户对数据库没有 CONNECT 权限,则 USE 语句将失败。如果没有为登录分配默认数据库,则其默认数据库将设置为 master。

报价取自这里

于 2013-05-29T09:34:27.050 回答