0

我正在尝试向我正在创建的 sql 列添加列描述,但遇到了问题。

在 SQL Mgmt Studio 中,我做了:

EXEC sys.sp_addextendedproperty 
@name = N'MS_Description', 
@value = N'test5', 
@level0type = N'SCHEMA', 
@level0name = 'dbo',
@level1type = N'TABLE',  
@level1name = 'tblConfigurationVariables',
@level2type=N'COLUMN',
@level2name=N'test6'
GO

它工作正常。但是当我在 vb.net 中这样做时(我认为是对的)

        objCmd.CommandType = CommandType.StoredProcedure
        objCmd.CommandText = "sys.sp_addextendedproperty"
        objCmd.Parameters.AddWithValue("@name", "N'MS_Description'")
        objCmd.Parameters.AddWithValue("@value", "N'" & txtVarDescription.Text & "'")
        objCmd.Parameters.AddWithValue("@level0type", "N'SCHEMA'")
        objCmd.Parameters.AddWithValue("@level0name", "dbo")
        objCmd.Parameters.AddWithValue("@level1type", "N'TABLE'")
        objCmd.Parameters.AddWithValue("@level1name", "tblConfigurationVariables")
        objCmd.Parameters.AddWithValue("@level2type", "N'COLUMN'")
        objCmd.Parameters.AddWithValue("@level2name", txtVarName.Text)
        i = objCmd.ExecuteNonQuery

我得到错误:

为过程“sp_addextendedproperty”指定了无效的参数或选项。

有任何想法吗?

4

1 回答 1

1

请注意,字符串的N前缀nvarchar不是SQL 中字符串的一部分'引号也不是。它们是用 SQL 编写字符串文字的方式。因此,它们不应出现在您传递的字符串中:

objCmd.Parameters.AddWithValue("@name", "MS_Description")
objCmd.Parameters.AddWithValue("@value", txtVarDescription.Text)
objCmd.Parameters.AddWithValue("@level0type", "SCHEMA")
objCmd.Parameters.AddWithValue("@level0name", "dbo")
objCmd.Parameters.AddWithValue("@level1type", "TABLE")
objCmd.Parameters.AddWithValue("@level1name", "tblConfigurationVariables")
objCmd.Parameters.AddWithValue("@level2type", "COLUMN")
objCmd.Parameters.AddWithValue("@level2name", txtVarName.Text)
于 2013-09-25T06:11:42.450 回答