Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server 2017-消息156,级别15,状态1,第1行关键字'附近语法不正确;如果';_Sql Server - Fatal编程技术网

Sql server SQL Server 2017-消息156,级别15,状态1,第1行关键字'附近语法不正确;如果';

Sql server SQL Server 2017-消息156,级别15,状态1,第1行关键字'附近语法不正确;如果';,sql-server,Sql Server,我花了2个小时在谷歌上搜索答案,没有任何解决方案。我需要认真的帮助 DROP TABLE IF EXISTS dbo.MySqlTable 这是我页面上唯一的一行代码,当我执行它时,我得到 味精156,第15级,状态1,第1行 关键字“IF”附近的语法不正确 以下是一个屏幕截图: 我只是不明白为什么我不能放下桌子 奇怪的是,它确实落在我的电脑上,落在这台学校的笔记本电脑上,什么都没有。我在这两台电脑上都安装了SQL Server 2017。希望以后能在我的PC上看到VS 2013,在我的笔记

我花了2个小时在谷歌上搜索答案,没有任何解决方案。我需要认真的帮助

DROP TABLE IF EXISTS dbo.MySqlTable
这是我页面上唯一的一行代码,当我执行它时,我得到

味精156,第15级,状态1,第1行
关键字“IF”附近的语法不正确

以下是一个屏幕截图:

我只是不明白为什么我不能放下桌子


奇怪的是,它确实落在我的电脑上,落在这台学校的笔记本电脑上,什么都没有。我在这两台电脑上都安装了SQL Server 2017。希望以后能在我的PC上看到VS 2013,在我的笔记本电脑上看到VS 2015。但是,我还没有集成这些功能。

此功能仅在兼容级别为130的SQL Server 2016上可用。检查数据库的兼容性级别

select name, compatibility_level from sys.databases
如果小于130,您可以将其更改为130(2016)或140(2017),如下所示


有时候我真的很讨厌这些东西

我从我的代码中删除了IF EXISTS,并简单地执行了通常的DROP TABLE,它成功了-_-

我第一次尝试在SQL Server 2017上删除表时,失败了。上网一个小时后,我知道我必须使用IF-EXISTS子句,猜猜看,它起作用了。 当我买了这台笔记本电脑并安装了同一台SQL Server 2017时,我显然花了一个小时才找到了,如果存在,就删除表,尽管失败了

谢谢大家

但是,为什么在同一版本的SQL Server 2017中使用不同的DROP语句


我感觉我将来会遇到更多问题。

检查数据库的兼容性级别。看起来您的数据库处于不同的兼容级别如果您只想删除表,请从语句中删除
IF EXISTS
,然后运行它。这是SQL Server中较新的功能,应该可以使用,但如果不需要,请将其删除。无需为此浪费2小时。“选择@@Version”-可能您未连接到您认为是的实例。数据库兼容级别与此功能没有区别。我刚刚在2016服务器上对一个兼容100(2008)的数据库运行了此操作,没有出现任何错误。失败的原因是它尚未创建,并且您无法删除一个不存在的表。然后,您尝试了一个IF-EXISTS子句,但没有成功。不过,还有其他方法可以做到这一点。如果OBJECT_ID('database..tableName)为空,则使用删除表tableName。是否运行了
SELECT@@VERSION
?结果是什么?@Martin Smith-这是Microsoft SQL Server 2014-12.0.2000.8(X64)2014年2月20日20:04:26版权所有(c)Windows NT 6.3上的Microsoft Corporation Express Edition(64位)(版本14393:)。我希望看到2017年,可能是因为我安装了SQL Server 2014,在安装2017年之前,我甚至没有卸载第一个。在我的电脑上,我只安装了2017而没有安装2014。我有几天不在家检查我的电脑上有什么版本。那就是答案。您正在连接到2014实例,该语法为2016+
 alter database testdb set compatibility_level = 130