You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2017 Express创建存储过程失败:加密提示与语法错误

解决SQL Server 2017 Express创建存储过程时的Msg 156语法错误

看起来你遇到的问题有点奇怪——其他数据库操作都正常,偏偏创建存储过程时触发语法错误,还伴随加密提示。我帮你梳理几个最可能的排查方向,按顺序试试:

1. 先确认数据库上下文和批处理分隔符

很多时候这个错误都是因为没切对数据库,或者没正确分隔批处理导致的。你代码里用到了Redesign数据库,但有没有在创建存储过程前明确切换过去?

  • 试试给代码加上USE语句和GO分隔符,确保批处理正确执行:
    USE Redesign;
    GO
    CREATE PROCEDURE [dbo].[EMS_Operations_SyncAssetTableByID2] 
        @Table_Name VARCHAR(255), 
        @Ids_For_Update VARCHAR(255), 
        @Is_Test BIT = 0 
    AS 
    BEGIN 
        DECLARE @DB_String varchar(55) ='Redesign' 
    END
    GO
    
    GO是SSMS的批处理分隔符,它会确保前一句的USE语句生效后,再执行创建存储过程的代码,避免上下文混乱。

2. 排查加密相关的干扰因素

你提到有加密提示,先排除连接或数据库加密设置的影响:

  • 检查SSMS连接属性:打开连接窗口时,点击“选项”,在“加密连接”下拉框里切换成“可选”,重新连接后再试创建存储过程。有时候强制加密的连接设置会引发一些奇怪的兼容性问题。
  • 确认目标数据库的加密状态:执行下面的语句看看Redesign是否启用了透明数据加密(TDE):
    SELECT name, is_encrypted FROM sys.databases WHERE name = 'Redesign';
    
    如果is_encrypted返回1,虽然TDE本身不会影响存储过程语法,但可以确认一下数据库的证书/密钥是否正常(不过大概率不是这个导致的语法错误,先做个排查)。

3. 检查SSMS的查询模式和数据库兼容性

  • 关闭SQLCMD模式:点击SSMS顶部的「查询」菜单,看看“SQLCMD模式”是否被勾选,如果是,取消勾选再试——SQLCMD模式会解析一些特殊语法,可能干扰普通的存储过程创建。
  • 确认数据库兼容性级别:SQL Server 2017的默认兼容性级别是140,如果你的Redesign数据库是从旧版本迁移过来的,低兼容性级别可能引发语法兼容问题:
    SELECT name, compatibility_level FROM sys.databases WHERE name = 'Redesign';
    
    如果级别低于140,执行下面的语句修改:
    ALTER DATABASE Redesign SET COMPATIBILITY_LEVEL = 140;
    

4. 排查隐藏的特殊字符

有时候复制粘贴的代码里会混入看不见的全角空格、非ASCII字符,导致SQL解析报错。你可以把代码复制到Notepad++这类编辑器,开启“显示所有字符”功能,检查是否有异常字符,然后重新复制回SSMS执行。

5. 快速验证权限和最简代码

先创建一个最简化的存储过程,排除参数或逻辑的干扰:

USE Redesign;
GO
CREATE PROCEDURE dbo.TestProc
AS
BEGIN
    PRINT 'Test Procedure';
END
GO

如果这个能成功,说明之前的代码里可能有细微的语法问题(比如参数定义的空格、符号),再逐步添加参数和逻辑排查。如果还是报错,就检查当前用户的权限:

USE Redesign;
GO
SELECT HAS_PERMS_BY_NAME(NULL, 'DATABASE', 'CREATE PROCEDURE') AS HasCreateProcPermission;

如果返回0,说明当前用户没有创建存储过程的权限,需要执行授权:

GRANT CREATE PROCEDURE TO [YourLoginName];

内容的提问来源于stack exchange,提问作者Daryl1976

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:07:51