現象
カスタム テーブルにデータを挿入する場合、またはカスタム テーブルにデータを挿入するプロセスを実行すると、次のようなエラー メッセージが表示されます。
TableNameテーブルへのアクセス中に次の SQL Server エラーが発生しました:
1088, "42000",[Microsoft][ODBC SQL Server Driver][SQL Server]"オブジェクト "NAVDBName.dbo。CompanyName$ TableName" は存在しないか、アクセス許可を持たないのでです。
SQL: SET
IDENTITY_INSERT "NAVDBName"."dbo"."CompanyName$ TableName" ON
注意 この例では 、TableName は 顧客の Microsoft Dynamics NAV テーブルを表します。 NAVDBName は 、顧客の Microsoft Dynamics NAV データベース名を表します。 CompanyName は、Microsoft Dynamics NAV の顧客の指定された会社名を表します。
この問題は、新しいデータベース オプションを使用する Microsoft Dynamics NAV Microsoft SQL Server発生する可能性があります。
原因
この問題は、次の条件に該当する場合に発生します。
-
エラー メッセージで示されているテーブルのフィールドの 1 つで、AutoIncrement プロパティが [はい] に設定されています。
-
使用する INSERT 操作では、AutoIncrement プロパティが [はい] に設定されているフィールドが明示的に設定されます。
-
次のいずれかのアクセス許可を持っている必要があります。
-
SYSADMIN サーバー ロールのメンバーシップ (SQL Server
-
Microsoft Dynamics NAV db_ownerのデータベース ロール メンバーシップの一覧
-
Microsoft Dynamics NAV db_ddladminのデータベース ロール メンバーシップの追加
-
解決策
この問題を解決するには、以下のいずれかの方法を使用します。
方法 1
AutoIncrement プロパティが [はい] に設定されているフィールドが設定されないよう、INSERT 操作を修正します。
方法 2
関連するフィールドの AutoIncrement プロパティを [いいえ] に設定します。
注意 方法 1 と方法 2 の両方で、Microsoft Dynamics NAV 開発者の支援が必要な場合があります(特に修正でコードの変更が必要な場合)。 ライブ Microsoft Dynamics NAV データベースに変更を適用する前に、このような変更を十分にテストする必要があります。
方法 3
カスタム テーブルの Alter アクセス許可を、&で関連するアプリケーション ロール (Standard セキュリティ モデルを選択した場合は &ndo$shadow など) SQL Server Management Studio に付与します。
注意 Microsoft Dynamics NAV でセキュリティ同期を実行すると、SQL Server Management Studioテーブルに手動で付与されるアクセス許可が上書きされます。 そのため、セキュリティ同期を実行した後で、カスタム テーブルに対する Alter アクセス許可を再度付与する必要があります。
詳細情報
Microsoft Dynamics NAV で、整数型フィールドまたは BigInteger データ型フィールドで AutoIncrement プロパティが [はい] に設定されている場合、関連するフィールドには、システムによって生成される一意の整数値が自動的に設定されます。 フィールドの設定に使用される値は、挿入される新しいレコードごとに連続してインクリメントされます。
AutoIncrement プロパティを実装するために、Microsoft Dynamics NAV では、IDENTITY SQL Serverが関連付けられている新しい列を定義します。 IDENTITY プロパティを使用すると、SQL Server説明したように列が自動的に設定されます。 SQL Server 列で IDENTITY プロパティが有効になっている場合、ユーザーが次のいずれかのアクセス許可を持たない限り、ユーザーは INSERT ステートメントに関連する列を明示的に設定できません。
-
SYSADMIN サーバー ロールのメンバーシップ (SQL Server
-
Microsoft Dynamics NAV db_ownerのデータベース ロール メンバーシップの一覧
-
Microsoft Dynamics NAV db_ddladminのデータベース ロール メンバーシップの追加
これらのアクセス許可を持つだけでなく、ユーザーは INSERT 操作を完了するために次のコマンドも実行する必要があります。
SET IDENTITY_INSERT <table_name> ON [現象] セクションに記載されているエラー メッセージが発生した場合、Microsoft Dynamics NAV は、この SET ステートメントを SQL Server で実行しようとしている。
IDENTITY プロパティを持つ列を明示的に設定するメソッドは、通常は必要ないメソッドです。 IDENTITY プロパティを持つ列は、通常、ID プロパティによって自動的にSQL Server。