タグ付けされた質問 「sql-server-2008」

SQL Server 2008(メジャービルドバージョン10.00.xxxx)。また、sql-serverでタグ付けしてください。


6
データベース2の論理ページ(5:65424)をフェッチしようとして失敗しました
SqlExceptionストアドプロシージャを呼び出すと、次のようになります。 データベース2の論理ページ(5:65424)をフェッチしようとして失敗しました。これは、4899918190390149120ではなく、アロケーションユニット7349876362857938944に属しています。 System.Data.SqlClient.SqlExceptionが発生しました Message = "データベース2の論理ページ(5:65424)をフェッチしようとしましたが失敗しました。これは4899918190390149120ではなく、割り当てユニット7349876362857938944に属しています。 Source = " 。Net SqlClient Data Provider" ErrorCode = -2146232060 Class = 21 LineNumber = 257 Number = 605 Procedure = "ispDisplayCount" Server = "10.10.1.1" State = 3 この例外はどういう意味ですか?上記の問題に対する解決策はありますか? 上記のエラーで参照されているデータベースはtempdbを示していますが、メッセージ605を参照する同様のエラーは、以下の回答を使用して修正できます。 メッセージ605、レベル21、状態3、行1 データベース7の論理ページ(1:8687634)をフェッチしようとして失敗しました。これは、72057594052476928ではなく、割り当てユニット72057594364821504に属しています。

5
バックアップ後に復元されたユーザー権限->復元操作
いくつかのSQL Server 2008データベースを新しいdbサーバーに移動して、それらすべてを(.bakファイルに)バックアップし、これらのファイルを新しいボックスにコピーして復元しました(すべてSQL Management Studioを使用して行いました)。 すべて問題なく動作しましたが、古いRDBMSで引き続き動作するSQL Serverアカウントを使用して、どのデータベースにもログインできません。私のWindows認証ログインは、ついでに問題なく動作します。 ユーザーと権限はすべてシームレスに新しいデータベースサーバーに複製されるという考えがありましたが、どこかで問題が発生しているようです。コメント/提案/ヘルプの提供をお願いします;-)

3
カスケード削除を避けるべき時期はありますか?
SQL Server 2008には、1対多の関係で他の3つの子テーブルにリンクされているプラ​​イマリテーブルがあります。したがって、プライマリテーブルでカスケード削除を使用して、プライマリテーブルのレコードが削除されると子テーブルのすべてのレコードが削除されるようにすることを検討しています。 では、カスケードは正しい選択をここで削除しますか? カスケードdeteleを使用しない場合

1
suser_name()がADアカウント名の変更を反映しないのはなぜですか?
ユーザー名の1つが合法的に変更されたため、Active Directoryのユーザー名をdomain \ oldnameからdomain \ newnameに変更しました。ただし、suser_sname()がストアドプロシージャでこのユーザーによって呼び出されると、新しい名前ではなく古い名前が返されます。 グーグルによって私はKB 946358に誘導されました。これは、おそらくsuser_name()がLsaLookupSidsを呼び出しているために、それらの名前がサーバーにキャッシュされ、更新されていないことを示唆しています。ただし、その記事の回避策にはサーバーの再起動が含まれており、それでも問題を理解したいと思います。 私のコンテキストを彼らのものに変更すると、正しい名前が戻ってきます: EXECUTE AS LOGIN = 'domain\newname' GO SELECT suser_name() --returns 'domain\newname' ...これもLsaLookupSidsを呼び出すため、正しくない名前が返されると想定していました。ここで働いているメカニズムを本当に理解していないようです。 重要かもしれないいくつかの観察: このユーザーはサーバーに明示的にログインしていません。しかし、彼らはそうするADグループのメンバーです。変更された名前(domain \ newname)がの結果セットに表示されexec xp_logininfo 'domain\ADGroupName', 'members'ます。domain \ oldnameにはありません。 ユーザーが、Access 2003 MDBのパススルークエリから呼び出されたストアドプロシージャ内からsuser_name()を呼び出しています。 過去に多くのユーザーのアカウント名を変更しましたが、この問題は先週しか確認されていません(先週、2つの変更が行われ、どちらも問題が発生しているようです)。 サーバーは、Windows 2008 R2 DatacenterエディションでSql Server 2008 SP3 x64を実行しています。 どうしたの?DBAとして、私は何をすべきか、またはこれを解決するためにどこを見ればよいでしょうか?

2
sp_executesqlをデフォルトで設定/使用できますか?
SQL Serverに対して非常に動的なSQLクエリを使用するアプリケーションを探しています。非常に奇妙で複雑な方法で作成されたクエリを見て、それは別の話ですが、私が自分で物事を見つけることができない(あまりにも愚かすぎる)ことの正当な理由を与えるように言います...わかりませんクエリがでラップされているコードsp_executesql。 しかし、トレースすると、多数のクエリがでラップされて表示されsp_executesqlます。アプリケーションソリューション全体には、コマンドもまったく含まれていませんsp_executesql。 だから、デフォルトでsp_executesqlを使用してクエリをラップするようソフトウェアに強制する、まだ知らない種類の構成があるのか​​どうか疑問に思いました。 何がこの動作を引き起こす可能性がありますか?


2
なぜasync_network_ioの待機タイプが発生するのですか?
先週、データベースで奇妙なことが起こりました。新しいエンティティなどを保存できなかったユーザーに対して、アプリケーションが突然ブロックされました。SQLServerのアクティビティモニター(2008と互換モード2005)を確認した後、次の3つのエントリが表示されました。 しばらくすると、ユーザーは接続タイムアウトを取得しました。プロセス64を強制終了したとき、彼らは再び正常に保存できました。 問題は、ブロック中に保存しようとしたエンティティがDBに複数回(最大3回)挿入されたことですが、これを防ぐためのコード(数値列は一意でなければならないが制約なし)があるはずです...チェックはコードで行われます)。 Entity Framework 6.0を使用しています。 これらのASYNC_NETWORK_IO待機タイプが発生する理由とタイミング、およびそれらを回避する方法を知っている人はいますか? そして、それらは正確にはどういう意味ですか?

1
80M行のインデックス付きテーブルで挿入クエリを実行するとMSG 666
奇妙なことに、私のストアード・プロシージャーは、一部の入力データについてメッセージ666を受け取り始めました。 次の構造を持つテーブルに行を挿入しようとすると、最後のステップでストアドプロシージャが失敗します。 Columns: A_Id: PK, int B_Id: PK, FK, int C_Id: PK, FK, int D_Id: PK, smallint これは基本的に、参照されるすべてのエンティティを接続するテーブルです。 Indexes: IX_TableName_D_id - Clustered index on D_id column PK_TableName - Unique non-clustered index on all columns (A_Id, B_Id, C_Id, D_Id) 両方のインデックスの断片化は低い(25%未満)。ただし、テーブルに対する操作の量が非常に多いため、PK_TableNameの断片化は急速に増大します。 テーブルサイズ: Row count: ~80,000,000 rows したがって、veeery simpleクエリを実行しようとすると、一部のD_Idに対して次のメッセージが表示されます。 メッセージ666。パーティションID 422223771074560のインデックスで、重複グループのシステム生成の一意の最大値を超えました。インデックスを削除して再作成すると、これが解決する場合があります。それ以外の場合は、別のクラスタリングキーを使用します。 クエリ例: INSERT …

5
SQL Server RAID 10とRAID 5のインストール
SQL ServerとVMSの設定は初めてです。私の前任者は、SQLインストールが存在するCドライブにはRAID 5を使用し、データベースファイルとデータベースログの両方にRAID 10を使用しました。 それが正しいのか、それとも代わりにRAID 5をSQLデータベースファイルに使用する必要があるのか​​と思いました。 何か助けは?

3
リンクサーバーのリスク
複数のサーバー上のデータベースからのデータを必要とする新機能を実装しています。これらすべてのサーバーのデータを結合して並べ替えるだけです。頭に浮かぶ2つのオプションは次のとおりです。 リンクサーバーを使用して簡単なクエリを作成し、1つのサーバーから実行して他のサーバーからデータを収集するデータを結合して並べ替えます。 アプリケーションを使用してすべてのサーバーからデータを収集し、それをSQL Serverに返して並べ替えます(アプリケーションに並べ替えを実装しないでください)。 SQL Server 2008 r2では、アクティブ/アクティブクラスターでサーバーを実行しています。すべてのデータベースに同じ権限があり、1つのデータベース/サーバーにアクセスできる場合は、それらすべてに権限があります。これは一般向けアプリケーションです(ユーザーログインが必要です)。 リンクサーバーを使用するリスクは何ですか?心配すべきセキュリティ上の欠陥はありますか?アクティブ/アクティブクラスターでリンクサーバーを実行するときに問題はありますか?他の方法と比較して、パフォーマンスに重大な問題はありますか? リンクサーバーに関する一般的な否定的な「話題」があるようですが、実際に懸念があると思わせるような具体的な情報は見つかりません。

1
無視されているSSIS 2008パッケージ構成
コマンドラインで/ ConfigFile something.dtsConfigを指定すると、2005年と比較して2008年にパッケージ構成が変更されるため、パッケージで定義された変数は、構成ファイルの設定を使用するのではなく、設計時の値を保持します。 外部設定ファイルを使用する方法を完全に理解しているのか、私にはよくわかりません。設定されている設計時の構成のみが外部ファイルの負荷を上書きするという記事を読みました。これは、変数を空の文字列に変更すると、上書きされることを意味しますか?変数を完全に削除することはできません!整数はどうですか? パッケージのパッケージ構成を使用してオフにすることについて言及している記事を見ました。 SSISパッケージエディターまたはXMLエディターを使用してパッケージ内の構成ファイルのパスを変更し、そのファイルの設定を "外部"(外部の/ ConfigFileオプションに関係なく)使用しますが、パッケージの変更。Test.dtsConfigとProduction.dtsConfigを含む1つのパッケージが必要で、パッケージを変更せずに前後にスワップできるようにします。 これを行うための推奨される方法は何ですか?

2
ミラーデータベースでのトランザクションログのメンテナンス
SQL Serverバージョン:2008 R2 Enterprise SP2 SQL Serverのメンテナンスを担当しているときに、間違っていると思われる問題に遭遇しました。それぞれがオフサイトでDRインスタンスにミラーリングされている3つのデータベースを持つ単一の本番インスタンスがあります。 DRインスタンスを調べていると、LDFファイルが巨大で、頻繁に使用されるデータベース用に35GBを超えることがわかりました。 これはおそらく、ミラーデータベースが完全復旧モードになっているためであり、ログはバックアップされたことがないため、ドライブの空き容量がなくなるまでログが増加し続けることを理解しています。 プリンシパルデータベースでログバックアップを実行していますが、ミラーでログバックアップを実行する際の注意点は何ですか。 ログバックアップを実行する前に、ミラーからの少なくとも1つのフルデータベースバックアップを完了する必要があります。その場合、ミラーであるため、使用する必要がある特別なオプションはありますか? 繰り返しますが、これはMIRRORデータベースでのトランザクションログのメンテナンスに関する推奨事項です。 ご意見ありがとうございます

4
SQL Server 2008 R2の圧縮後にログファイルサイズを手動で設定する
その瞬間、やや不本意なDBAになり、何かの助けが本当に必要です。 フルリカバリモードで40GBのデータベースがあり、ログバックアップが構成されておらず、84GBの巨大なログファイルがあります。これまでのところ、この状況を回避するための私の計画は、データベースで完全なログバックアップを実行し、ログファイルを圧縮し、データベースバックアップを使用してログバックアップを毎晩実行し、制御を維持できるように保守計画を推進することです。 私の問題は、ログファイルを何も縮小しないで、月曜日の最初の朝を絶えず成長させておくことです。ファイルがどうあるべきか(データベースの約20%)については大まかな見積もりがあり、できる限り多くの連続したスペースを確保するために、最初から設定します。これは、データベースのプロパティ->ファイルで「初期サイズ」を変更した場合に過ぎませんか?これを実行するには、データベースをオフラインにする必要があると思いますか? 前もって感謝します

1
insert-execブロックを使用して呼び出されたストアドプロシージャでの例外の処理
insert-execブロックで呼び出されるストアドプロシージャがあります。 insert into @t exec('test') ストアドプロシージャで生成された例外を処理し、処理を続行するにはどうすればよいですか? 次のコードは問題を示しています。私がやりたいことは、内部exec()呼び出しの成功または失敗に応じて0または-1を返すことです。 alter procedure test -- or create as begin try declare @retval int; -- This code assumes that PrintMax exists already so this generates an error exec('create procedure PrintMax as begin print ''hello world'' end;') set @retval = 0; select @retval; return(@retval); end try …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.