SQLSERVERの ManagementStudio を利用して次の変数を宣言したときに
エラーが発生します。
※指定アドレスはリンクサーバ先になります。
DECLARE @t [192.168..].[dbname].[dbo].[ユーザー定義テーブル型名] ←リンクサーバ先のテーブル型です。
エラー内容
型 の名前 '192.168...dbname.dbo' は、プレフィックスの最大数を超えています。最大数は 1 です。
下記のようにユーザー定義テーブルを宣言してテーブルを作成し、ストアドプロシージャに渡したいのですが、
どのように変数を宣言すれば乗り越えられますでしょうか?
DECLARE @t [192.168.**.**].[dbname].[dbo].[ユーザー定義テーブル型名] insert into @t select item_id from orderTable where id between 1000 and 2000 exec [192.168.**.**].[dbname].[dbo].[ストアドプロシージャ名] @t
何卒よろしくお願いいたします。
自分が操作しているインスタンスとは別のリモートのSQLサーバーのオブジェクトを使おうとしているということだろうか?
試してないのでできるかわかんないけど、どうも文法的にはIPアドレスの表現(.区切り表記)がSQL Serverオブジェクトのプレフィックスと解釈されてるような気がするので、リンクサーバーとか使ってみると意外とイケるのかなと思いましたが、どうでしょう。
https://docs.microsoft.com/ja-jp/sql/relational-databases/linked-servers/create-linked-servers-sql-server-database-engine?view=sql-server-ver15
もしクエリを実行するのがローカルのインスタンスであれば[192.168.**.**]を削除すりゃ良いと思うけど。
失礼しました!
リンクサーバ先になります。
リンクサーバー名がIPアドレス表記になってるということなのかな?(できたっけ?)
hostsでもなんでもいいんで、リンクサーバー名を適当に名前解決できるように作ったらどうなんですかね?
リンクサーバ名をLS1で作成してみました。
[LS1].[dbname].[dbo].[ユーザー定義テーブル型名] を指定して
同じエラーが出ました。
プレフィックス最大1ということなので、この3つ [LS1].[dbname].[dbo] を
一つにまとめて指定する方法があればご教授いただけると幸いです。