データベース管理者

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

4
パフォーマンスに影響を与えずに大規模なSQL Serverデータベースをバックアップするにはどうすればよいですか?
クエリの実行が遅い、または早朝にタイムアウトになるというレポートがありましたが、これに影響を与えると思われる実行中のジョブは、データベースのバックアップジョブだけです。 データベース自体は約300 GBで、バックアップジョブは午前4時30分に開始され、午前7時過ぎまで終了しません。バックアップジョブの現在の構文は次のとおりです。 BACKUP DATABASE [DatabaseName] TO DISK = N'E:\Database Backups\DatabaseName.Bak' WITH INIT, NOUNLOAD, NAME = N'DatabaseName.Bak', NOSKIP, STATS = 10, NOFORMAT E:\ データベースとデータベースバックアップの両方を保持するサーバー上のパーティションです。 また、これは専用のスタンドアロンサーバーではなく、仮想サーバーであることにも注意してください。仮想サーバーに切り替えた直後に、バックアッププロセス中に速度低下に関する苦情が寄せられるようになったので、関連があると思います。 このバックアップジョブを実行して、実行中のクエリのパフォーマンスに影響を与えない方法はありますか? SQL Server 2005を使用しています


3
クライアントからSQL Serverへの接続を確認する簡単な方法
トラブルシューティングの目的で、SQL Serverに接続できない可能性のあるアプリケーションとは無関係に、クライアントがSQL Serverインスタンスに接続できるかどうかを確認したいと思います。 デフォルトのWindowsシステムツールを使用してこれを行う簡単な方法(つまり、サードパーティのソフトウェアをインストールする必要はありません)はありますか?おそらくスクリプトまたはネットワークアプリケーションを使用していますか?

1
プレーンテキストのpostgres .backupファイルを復元する方法
dbテキスト全体を検索したいため、pgAdminからpostgres dbを単純な形式でエクスポートしました。その後、データベースを復元しようとしましたが、アーカイブファイルが有効なアーカイブファイルではないというエラーが表示されます。復元できる場合、dbを復元するにはどうすればよいですか?

2
SQL 2005 [SQL_Latin1_General_CP1_CI_AS]から2008への移行-「後方互換性」を使用して機能を失う
SQL 2005 [インスタンスとDBの照合順序SQL_Latin1_General_CP1_CI_AS]からSQL 2008 [デフォルトは]に移行していますLatin1_General_CI_AS。 SQL 2008 R2のインストールを完了し、デフォルトのLatin1_General_CI_AS照合を使用しましたが、データベースの復元はまだSQL_Latin1_General_CP1_CI_ASです。例外的な問題が発生しました- Latin1_General_CI_ASデータベースが存在していた ときの#tempテーブル SQL_Latin1_General_CP1_CI_ASと、これが現在の場所です-落とし穴についてのアドバイスが必要です。 SQL 2008 R2のインストールでは'SQL Collation, used for backwards compatibility'、2005データベースと同じ照合を選択するオプションがある場所で使用するインストールオプションがありますSQL_Latin1_General_CP1_CI_AS。 これにより、#tempテーブルで問題が発生することはなくなりますが、落とし穴はありますか? SQL 2008の「現在の」照合を使用しないことにより、あらゆる種類の機能または機能が失われますか? 2008年からSQL 2012に移行したとき(2年以内など)はどうですか?問題はありますか? ある時点で行くことを余儀なくされLatin1_General_CI_ASますか? 一部のDBAのスクリプトが完全なデータベースの行を完了し、新しい照合を使用してデータベースに挿入スクリプトを実行することを読みました。

4
innodb_buffer_pool_sizeとinnodb_log_file_sizeを増やした後、mysqlが起動しない
私はここで、このソリューションを、次の午前/programming/3927690/howto-clean-a-mysql-innodb-storage-engine/4056261#comment14041132_4056261と私を増加させようとしたinnodb_buffer_pool_size4G以降1G(1024Mも)にログファイルのサイズに追加されますが、mysqlはこれらの値で開始しません。512Mに戻すと、mysqlは正常に起動します。 どうすれば解決できますか?私のサーバーは16GBのもので、Webmin sysinfoによると: Real memory 15.62 GB total, 3.13 GB used 一方、エラーログも見つかりました。 120529 10:29:32 pidファイル/var/run/mysqld/mysqld.pidからのmysqld_safe mysqldが終了しました 120529 10:29:33 mysqld_safe / var / lib / mysqlのデータベースを使用してmysqldデーモンを起動する 120529 10:29:33 [注]プラグイン「FEDERATED」は無効になっています。 120529 10:29:33 InnoDB:InnoDBメモリヒープが無効になっています 120529 10:29:33 InnoDB:ミューテックスとrw_locksはGCCアトミックビルトインを使用します 120529 10:29:33 InnoDB:圧縮テーブルはzlib 1.2.3を使用します 120529 10:29:33 InnoDB:LinuxネイティブAIOの使用 120529 10:29:33 InnoDB:バッファープールの初期化、サイズ= 1.0G 120529 10:29:33 InnoDB:バッファープールの初期化が完了しました InnoDB:エラー:ログファイル./ib_logfile0は異なるサイズ0 134217728バイトです …

3
SQLサーバーからの高ディスクI / Oまたは高ディスクI / OがSQLサーバーを遅くしていますか?
SQLサーバーのパフォーマンスの問題について、DBAと2人のハードウェア担当者と議論してきました。通常はすべて問題ありませんが、過去数週間にわたって、SQLサーバーで大きなラグスパイクが発生しています。SQL ServerがディスクI / Oで待機していることは明らかです。しかし、SQL Serverが異常に高いI / Oを要求しているためだと言われ続けています。そうではありません。実行しているものから、通常のことは何もありません。DBAが注意を払うのは、ブロッキングなどを引き起こしているものだけで、これは役に立ちません。たとえば、バックアップの主なものは、ASPStateデータベースの操作です。これは、WebサーバーでASPセッション状態を管理するために使用しています。これらの操作は通常、Sp_who2のアクティブな結果には表示されません。これは、これらの操作が非常に高速に発生するためです。データベースは単純復旧モードであり、ロギングは最小限です。ただし、これらのラグスパイクの間、ブロックまたは待機中のデータベースに対する多くの選択および更新操作を確認できます。何が起こっているのかは、そのデータベースのログとデータファイルに使用されているRAIDアレイでディスクの使用率が高くなっている原因で誰かまたは何らかのジョブが実行されていると確信しています。私たちのウェブサイトを殺している何かをしていることを誰も認めたくないので、問題はそれを証明しています。 私の質問は、SQLサーバーがI / Oを待機していることを示すのに役立つパフォーマンスカウンターまたはログに記録できるものですが、通常よりも多くを求めているためではなく、代わりにディスクがSQLサーバーからのリクエストに応答するためです通常のように迅速に?


2
オプティマイザーに必要な時間を増やすことはできますか?
オプティマイザーは、実行可能なすべての実行計画を調査するために必要な時間をすべてとることができないため(実行時間を最小化する必要があります)、カットされることがあります。 これをオーバーライドして、オプティマイザーに必要に応じて常に(または一定のミリ秒単位で)渡すことができるかどうか疑問に思っていました。 この(atm)の必要はありませんが、複雑なクエリがタイトループで実行され、最適なプランを考え出し、それを事前にキャッシュするシナリオを想像できます。 もちろん、ループがタイトであるため、クエリを書き換えて、それがなくなるようにしてください。 これは、好奇心からの質問であり、短絡最適化と完全最適化の間に時々違いがあるかどうかを確認することでもあります。 トレースフラグ2301を使用すると、オプティマイザーにより多くの時間を与えることができます。これは、私が求めていたものとはまったく異なりますが、近づいています。 これについて私が見つけた最高の情報は、Ian JoseによるSQL Server 2005 SP1のQuery Processor Modeling Extensionsにあります。 このトレースフラグは注意して使用してください!しかし、より良い計画を思いつくときに役立ちます。こちらもご覧ください: Grant Fritchey が「最適化レベル」とタグ付けした記事。 SQL Server 2008にアップグレードする前に… Brent Ozar作。 Microsoftサポートにより、高パフォーマンスのワークロードで実行されている場合のSQL Serverのチューニングオプション。 結合順序のソリューション空間が指数関数的に爆発する、多くの結合を持つクエリについて考えていました。SQL Serverが使用するヒューリスティックは非常に優れていますが、時間があれば(数秒から数分)オプティマイザーが別の順序を提案するのではないかと考えていました。

2
同じログインを使用して3番目のデータベースを経由して2つのデータベースを接続する方が安全ですか?
次のセットアップがあります。 デスクトップソフトウェアで使用されるプライベートデータを含む複数の運用データベース プライベートデータベースのデータを必要とするパブリックWebサイトのWebデータベース プライベートデータベースからデータを取得するいくつかのビューとストアドプロシージャを含む中間データベース 現在、WebサイトはWebデータベースにログインし、Webデータベースは中間データベースに接続して、運用データベースでデータを取得したり、ストアドプロシージャを実行したりします。すべてのデータベースは同じSQLインスタンス上にあり、プロセス全体が同じユーザーアカウントを使用します。 ユーザーアカウントには、Webデータベースと中間データベースへのフルアクセスがありますが、プライベートデータベースの特定のビューとストアドプロシージャにのみアクセスできます。 これは、パブリックデータベースをプライベートデータベースに直接接続するよりも本当に安全ですか? 同じログインがすべてのデータベースのデータにアクセスするために使用され、プライベートデータベースで必要なビュー/ SPのみに既に制限されているため、中間データベースは物事を複雑にするためだけにあるようです。削除したいと思っています。

4
* Tables *をテーブル値パラメーターとして使用(TVP)
MS SQL 2008はTVPをサポートしています。TVPは、保存された処理手順にデータを一括アップロードするための便利な機能です。 ユーザー定義型を作成するのではなく、既存のテーブル定義を活用できますか?たとえば、次の署名を使用してストアドプロシージャを作成することはできますか? CREATE PROCEDURE usp_InsertProductionLocation @TVP **LocationTable** READONLY ドキュメントは、これが不可能であることを示唆しているようです。 サンプルコード /* Sample code from: http://msdn.microsoft.com/en-us/library/bb510489.aspx */ USE AdventureWorks2008R2; GO /* Create a table type. */ CREATE TYPE LocationTableType AS TABLE ( LocationName VARCHAR(50) , CostRate INT ); GO /* Create a procedure to receive data for the table-valued …

2
MySql-ライブデータベースのinnodb_file_per_tableの変更
私は大規模なMySql DB(150GB)を持っinnodb_file_per_tableてoffいますが、DB全体が1つのファイル(ibdata1)でホストされるように設定されていることに気づきました。アクティブ化innodb_file_per_tableして、DBをいくつかのファイルにさかのぼって分割したいのですが、これを行う最良の方法は何ですか?
18 mysql  innodb  my.cnf 

1
データベースのエイリアスまたはシノニムを作成することはできますか?
データベースのエイリアスまたはシノニムを作成することはできますか?私ができることを望んでいるのは、NewDatabaseNameをOldDatabaseNameとしてエイリアス化して、大量のコードを書き直さなくて済むようにすることです。 バックストーリー:私はばかげた自己誘発問題を抱えたクライアントからアプローチされました。SQL Serverバックエンドを備えたサードパーティアプリケーションがあります。ユーザーは、Visual Basicを使用してこのデータベースに対してカスタムレポートを作成し、すべてのデータベース接続情報をプログラムにハードコーディングしています。 最近、サードパーティのソフトウェアはデータベースの名前を変更しました。これで、すべてのレポートEXEが失敗しています。 ああ、彼らは多くのソースコードも持っていません。 私は笑いを抑えて、自分に何ができるか見てみようと言いました。

5
MySQLはNULLである/ NULLではない
次の表をご覧ください。 mysql> desc s_p; +-------------------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------------------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | s_pid | int(10) unsigned | YES | MUL | NULL | | | sm_id | int(10) …
18 mysql  count 

2
NEWSEQUENTIALID()を列のデフォルト値として使用できないのはなぜですか?
Management Studioでテーブルを作成しようとしていますが、新しい(SQL 2005以降の)NEWSEQUENTIALID()関数について読んだ後、試してみたいと思いました。 これは私がやっていることです: しかし、それは私をさせません。私が得るエラーメッセージは次のとおりです。 'FormTemplate (Forms)' table - Error validating the default for column 'FormTemplateId'. ここにトリックがありませんか?私は間違いなくSQL Server 2008 R2を実行しています。

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