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文字列のプレフィックスは、SQL の文字列の一部nvarcharではないことに注意してください。引用符もありません。これらは、文字列リテラルが 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 に答える