【发布时间】:2018-09-30 04:57:38
【问题描述】:
我设置了一个本地数据库 (SQL Server 2017 Express)。一切正常,但是在 SSMS 中创建一个简单的存储过程时,我遇到了错误。
比如这个
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
不会运行,我收到错误消息:
消息 156,第 15 级,状态 1,第 1 行
关键字“PROCEDURE”附近的语法不正确。消息 156,第 15 级,状态 1,第 1 行
关键字“PROCEDURE”附近的语法不正确。消息 8180,级别 16,状态 1,过程 sp_describe_parameter_encryption,第 1 行 [批处理开始第 0 行]
无法准备报表。消息 8180,级别 16,状态 1,过程 sp_describe_parameter_encryption,第 1 行 [批处理开始第 0 行]
无法准备报表。执行批处理时出错。错误信息是:内部错误。 sp_describe_parameter_encryption 返回的结果集格式无效。缺少其中一个结果集。
我不确定是什么原因造成的,或者数据库中是否存在损坏,因为数据库中有加密,我不确定它在调用什么。
我还注意到批处理中第一个 SQL 语句下面有一条蓝线,上面写着
@DB_String 将被转换为具有以下属性的 System.Data.SqlClient.SqlParameter:SqlDbType = varchar,Size 55, Precision=0
当我在我们的远程服务器上运行相同的代码时,它可以毫无问题地完成。知道是什么原因造成的吗?
【问题讨论】:
-
你的存储过程的参数必须在括号内
-
@GuidoG 不,这不是真的,即使是这样,也会导致不同的错误消息。
-
工具 > 选项 > 查询执行 > SQL Server > 高级 > 为 Always Encrypted 启用参数化。这是检查吗?尝试取消选中它(至少暂时)。
标签: sql-server ssms sql-server-2017