Sql server SQL Server 2017-消息156,级别15,状态1,第1行关键字'附近语法不正确;如果';
我花了2个小时在谷歌上搜索答案,没有任何解决方案。我需要认真的帮助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,在我的笔记
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