データベース管理者

データベースのスキルを向上させ、コミュニティの他の人から学びたいデータベースの専門家向けのQ&A

2
SQL Server AFTER INSERTトリガー
列のテキストmarriedで挿入が行われた後にこのトリガーを発生させたいmarital_status、これが今のところ ALTER TRIGGER [dbo].[marriage] ON [dbo].[applicant_personal_info] AFTER INSERT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; IF (SELECT [marital_status] FROM inserted) = 'married' BEGIN INSERT INTO [dbo].[applicant_marriage_info]([dom]) VALUES('abc') END END

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

2
UbuntuにOracle Instant Clientをインストール/構成する方法
OracleはLinuxサポートに関してRPMを中心としているため、Ubuntu / DebianベースのシステムにOracle Instant Clientをインストールするのは厄介です。 Ubuntuにインスタントクライアントを簡単にインストールして構成するための最良の方法は何ですか?
10 oracle  ubuntu 

5
Oracle起動エラー(パラメータファイルを開けませんでした)
Oracle 11.gサーバーをUbuntu 12.10にインストールしました。しかし、サーバーを起動できません。サーバーを起動すると、次のエラーが発生します。 SQL> startup ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/xe/dbs/initXE.ora' この問題を解決するにはどうすればよいですか?ターゲットのホストまたはオブジェクトが存在しないため、接続に失敗したと思います。ターゲットホストを指定するにはどうすればよいですか? ランニング: $ ls -latr /u01/app/oracle/product/11.2.0/xe/dbs/initXE.ora 戻り値: -rw-r--r-- 1 oracle dba 2637 Mar 13 17:07 /u01/app/oracle/product/11.2.0/xe/dbs/initxe.ora 実行echo $ORACLE_SIDしても何も表示されません-空の行。

2
テーブルをキャッシュするためのフィルファクターは何ですか?
シリアル化されたJavaオブジェクトを格納するテーブルを大幅に更新/アクセスしました。これらは2〜3時間テーブルに表示され(その期間中にも更新されます)、その後削除されます。テーブルのサイズは約300MBです。私はそれが非常に、非常に頻繁にVACUUMされていることを発見しました、そしてそれを変えることfillfactorは助けになるのだろうか?

2
ログ配布-スタンバイを使用した復元-SQL Server 2012で壊れ続ける
RESTORE WITH STANDBYレポート目的でデータベースを読み取り専用モードで復元するために、ログ配布とSQL Server 2012を使用しています。ただし、ログ配布の設定は、1つまたは2つのログバックアップの復元が完了した後も壊れ続けます。ログ配布は、それがとして実行されている場合にのみ機能しRESTORE WITH STANDBYます。RESTORE WITH NORECOVERY問題はありません。 これに関する私の唯一の直感は、プライマリデータベースはそれほど動的ではないということです。したがって、トランザクションがない場合、これはRESTOREプロセスに問題を引き起こす可能性がありますか? アイデア、既知の修正? 2つのテーブルを頻繁に更新する定期的なジョブを実行することで、数日間は機能していました。ジョブがログ配布セットアップの実行を停止するとすぐに失敗し、.trnファイルを処理できませんでした。私はログ配布をリセットし、小さな更新を行って実行が継続するかどうかを確認しようとしました。テーブルの1つのレコードの1つの列の値を、失敗した場合でも変更しました。 ご回答いただきありがとうございます。 PS:ログからの抜粋 2013年2月25日13:00:00、LSRestore_DBDB01-A_BulldogDB、In Progress、1、DBREPORTS、LSRestore_DBDB01-A_BulldogDB、Log shipping restore log job step。,, 2013-02-25 13:00:12.31 ***エラー:ログバックアップファイル '\\ dbsan01 \ DBBackups \ LSBackup_BulldogDB \ BulldogDB_20130225180000.trn'をセカンダリデータベース 'BulldogDB'に適用できませんでした。(Microsoft.SqlServer.Management.LogShipping)*** 2013-02-25 13:00:12.31 ***エラー:データベース 'BulldogDB'のログの処理中にエラーが発生しました。可能であれば、バックアップから復元します。バックアップが利用できない場合は、ログを再構築する必要があるかもしれません。 リカバリ中にエラーが発生し、データベース 'BulldogDB'(8:0)を再起動できませんでした。回復エラーを診断して修正するか、既知の正常なバックアップから復元します。エラーが修正されない、または予期されない場合は、テクニカルサポートに連絡してください。 RESTORE LOGが異常終了しています。 ファイル1のデータベース「BulldogDB」ファイル「BulldogDB」の0ページを処理しました ファイル1でデータベース「BulldogDB」ファイル「BulldogDB_log」の1ページを処理しました(.Net SqlClientデータプロバイダー)*** 2013-02-25 13:00:12.32 ***エラー:履歴/エラーメッセージをログに記録できませんでした(Microsoft.SqlServer.Management.LogShipping)*** 2013-02-25 13:00:12.32 ***エラー:ExecuteNonQueryには、開いて利用可能な接続が必要です。接続の現在の状態は閉じています。(System.Data)*** …

2
Oracleでレコードがロックされている場合、どのレコードがロックされているかを知ることができますか?
レコードがロックされている場合、どのレコードがロックされているかを知ることができますか? レコードのROWIDまたはその他の情報を取得するにはどうすればよいですか? このSQLでいくつかの情報を得ることができます SELECT c.ROW_WAIT_OBJ#,c.ROW_WAIT_FILE#,c.ROW_WAIT_BLOCK#,c.ROW_WAIT_ROW# FROM v$locked_object a, dba_objects b, v$session c WHERE a.object_id = b.object_id AND a.SESSION_ID = c.sid(+) 関数を使用してROWIDを取得する方法をWebで見つけました DBMS_ROWID.ROWID_CREATE() しかし、それは機能していないようです。
10 oracle  locking 

1
式の型変換は、クエリプランの選択で「CardinalityEstimate」に影響を与える可能性がありますか?
パーティションビューに履歴データを格納するアーカイブデータベースを維持しています。パーティション化列は日時です。ビューの下の各テーブルには、1か月分のデータが格納されます。 各テーブルのイベントを、datetime列のチェック制約で制約します。これにより、オプティマイザは、イベント日時列でフィルタするクエリを検索するテーブルを制限できます。 チェック制約の名前はSQL Serverによって生成されているため、名前を確認しても何を行うかを知るのは困難です。 制約名を「CK_TableName_Partition」の形式にしたい。 このクエリを使用し、sql_text列からデータをコピーして、名前変更スクリプトを生成できます。WHERE句は、SQL Serverによって生成されたように見える名前のチェック制約に一致します。 SELECT checks.name AS check_name, tabs.name AS table_name, skemas.name AS schema_name, cols.name AS column_name, N' EXECUTE sys.sp_rename @objname = N''' + skemas.name + N'.' + checks.name + N''', @newname = N''CK_' + tabs.name + N'_Partition'', @objtype = ''OBJECT'';' AS sql_text FROM sys.check_constraints AS checks …

4
ギャップとアイランド:クライアントソリューションとT-SQLクエリ
ギャップとアイランドのT-SQLソリューションは、クライアントで実行されているC#ソリューションよりも速く実行できますか? 具体的には、いくつかのテストデータを提供します。 CREATE TABLE dbo.Numbers ( n INT NOT NULL PRIMARY KEY ) ; GO INSERT INTO dbo.Numbers ( n ) VALUES ( 1 ) ; GO DECLARE @i INT ; SET @i = 0 ; WHILE @i < 21 BEGIN INSERT INTO dbo.Numbers ( n ) SELECT n + …

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

5
PostgreSQLユーザーがパスワードの変更後にサーバーに接続できない
私はこれを作成した4つの役割で満たしまし た。GUI(1)を使用してpgAdmin IIIでユーザーのパスワードを変更した後、そのユーザーはそれ以上ログインできなくなります。 pgAdmin III表示エラーメッセージ: An error has occurred: Error connecting to the server: FATAL: password authentication failed for user "sam" FATAL: password authentication failed for user "sam" 私のシステム:Ubuntu 12.04上のPostgresql 9.2 これを修正する方法はありますか? (1):アカウントpostgresでログインし、ログインロールでユーザーを右クリックし、[定義]タブに移動してパスワードを入力します

1
同じ行からの複数選択に対して、Union Allよりも優れたオプションはありますか?
スキーマの例: CREATE TABLE [dbo].[Base]( [ID] [int] IDENTITY(1,1) NOT NULL, [Option1ID] [int] NULL, [Option2ID] [int] NULL, [Option3ID] [int] NULL, [Option1Name] [varchar] NULL, [Option2Name] [varchar] NULL, [Option3Name] [varchar] NULL, [Option1LName] [varchar] NULL, [Option2LName] [varchar] NULL, [Option3LName] [varchar] NULL,) 次のように表示される結果を取得する方法はありますか? ID | OptionID | OptionName | OptionLName 私はUNION ALLを使用してこれを達成しようとしましたが、これは私の例では同じ行を3回処理することを意味し、実際の問題では10回実行する必要があります。レガシーコードのため、テーブルを正規化できません。ベース行を一度だけ超える方法はありますか?

2
単一のファイルグループでのパーティション分割
データベースに非常に大きなテーブルがいくつかありますが、このデータのかなりの部分が「古い」ものです。 私の制御が及ばない状況のため、この「古い」データを削除することは許可されていません。その他の制限は、データベースを変更できないことです。つまり、データベースにファイルグループを追加できます。現在の状態では、すべてがPRIMARYファイルグループに存在しています。 これらのテーブルを「新しい」、「古い」、「アーカイブ」などのいくつかのパーティションに分割することを考えていました。この目的で使用したい「ステータス」列があります。 説明されているシナリオと制限を考えると、パーティション分割がここで意味をなすかどうか疑問に思っていました。つまり、テーブルがこのようにパーティション化されているが、すべてのパーティションが同じファイルグループにある場合、SQL Serverは、「新しい」データが存在する基になるファイル内の特別な領域を見つけるのに十分スマートであり、 「古い」データのあるエリア? 言い換えると、私のデータの80%が「古い」としましょう。SQL Serverには、基になるファイルの100%へのアクセスを回避し、「新しい」データを含む20%のみにアクセスするメカニズムがありますか(もちろん、WHEREクエリの句でパーティション列を指定するとします)。 私はこれに答えると思います、パーティションが内部でどのように実装されているかを理解する必要があります。私はどんなポインタにも感謝します。

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

1
統計を更新するときにサンプリングはどのように機能しますか?
私はいくつかの巨大なテーブルを持っています。毎週のメンテナンスプランを使用して、統計が最新であることを確認したいと思います。 ただし、これには時間がかかりすぎます。 指定した場合 WITH SAMPLE 50 PERCENT SQL Serverは次にサンプルを行います: ページの最初の50% 他のすべてのページ または他の戦略? BOLはこれについて明確ではありません。

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