0

この記事で説明されているように、私は長い間ストアド プロシージャ キーボード アクセラレータのファンでした。ただし、SQL 2000 から 2005 に移行したとき、およびクエリ アナライザから Management Studio に移行したときに、引数の処理が変更されました。QA では、カンマ区切りの引数が 2 つの別個の引数として自動的に読み取られました。SSMS では、少なくとも私にとっては、カンマを含む 1 つの引数として読み取られます。同様に、一重引用符を含む単一の引数を渡すと、引用符をエスケープしない限り、構文エラーが発生します(' -> '')。上記のリンク先の記事では、著者はこれが SSMS の場合には当てはまらないことを暗示していますが、彼女の正確な例でも、カンマ区切りの引数は、私が試したすべての SSMS インストールで 1 つの引数として解釈されています (3 のそれら)、私が試したすべての SQL Server インストール (そのうち 4 つ) に対して実行されます。

たとえば、SSMS に次のように入力します。

Person,4

それを選択してショートカットを実行すると、「無効なオブジェクト名 'Person,4'.

これを修正する方法を知っている人はいますか?これらのショートカットを使用している人はいますか? 過去 2 年間、この問題について何度か Google で検索しましたが、うまくいきませんでした。

編集: SSMS の特定のビルドに問題がある可能性があります。以下にフォローアップ投稿があります。

4

4 に答える 4

1

あなたの質問を読んでから、あなたが参照した記事を読むまで、私はこれを試したことがなかったので、これを一粒の塩で取ってください.

とはいえ、SSMS を使用して自分のコンピューターでプロセスを動作させることができ、説明したエラーを再現することもできます。

これを期待どおりに動作させるために、master データベースに sproc を作成し、キーボード ショートカットを割り当てて、SSMS を再起動しました。次に、databasename.schema_name.table_name を一重引用符で囲み、その後にコンマ、整数値を入力しました (テストした sproc は、この記事の GetRows サンプルです)。私はまだマスターデータベースに接続していました。

これは問題なく機能しました。

あなたが言及したのと同じエラーを取得するために、スキーマ名またはデータベース名への参照を削除しましたが、あなたと同じエラーを受け取りました。

おそらく、テーブル名の前にデータベース名とスキーマ名を追加する必要がありますか?

于 2008-09-17T18:08:44.780 に答える
0

私は SSMS バージョン 9.00.3042.00 も使用しています。これはおそらく、私のマシンで動作している理由を説明しています。

于 2008-09-18T13:22:39.577 に答える
0

Tim's suggestion didn't solve my problem on my development PC, but it did convince me to try again from a different PC. When using a different PC's SSMS to log into the development PC's database and trying exactly what Tim describes, I'm having the same behavior Tim describes.

I was also able to re-replicate the argument parsing issue on the other PCs I had tried in the past. I'm hoping Tim can let me know what's the version and build number on his SSMS installation, because my current theory is that the problem is just from the specific build that my coworkers and I have on our dev PCs -- the version string is "Microsoft SQL Server Management Studio 9.00.1399.00". All of our installs of that version took place well over a year ago, so I don't know that I can trace back what disk it's from.

The one that is NOT having the problem is actually our development server, which has "Microsoft SQL Server Management Studio 9.00.3042.00" installed. I don't know if this might be something I can make go away by patching or something, but it currently looks like 1399 reads the entire selection as a single argument, while 3042 does some pre-parsing. I've also recently found that when I pass in a string that contains "--" (comment token) in 3042, everything after the "--" is ignored, while in 1399, it's all included in the first argument.

于 2008-09-17T19:25:43.267 に答える
0

ティムに同意します。SQL Server 05 sp2 にアップグレードしたところ、このバグが修正されたことを確認しました。

于 2008-12-18T11:26:49.893 に答える