データベース管理者

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

1
データベースコピーウィザードの使用中にタイムアウトでエラーが発生しました
マイクロソフトは、SQL Server 2012データベースコピーウィザードがSQL Server 2000データベースをSQL Server 2012にコピーする最も最適な方法であると私に信じさせました。数時間苦労した後、いくつかの問題を乗り越えることができ、中規模のSQL Server 2000データベースからSQL Server 2012へ。 ただし、30GBデータベースの場合、ウィザードは次のエラーで常に失敗します。 メッセージ:データの転送中にエラーが発生しました。詳細については、内部の例外を参照してください。 StackTrace:Microsoft.SqlServer.Management.Smo.Transfer.TransferData() at Microsoft.SqlServer.Dts.Tasks.TransferObjectsTask.TransferObjectsTask.TransferDatabasesUsingSMOTransfer() InnerException->タイムアウト。操作が完了する前にタイムアウト期間が経過したか、サーバーが応答していません。 CREATE DATABASEが失敗しました。リストされている一部のファイル名を作成できませんでした。関連するエラーを確認してください。 StackTrace: System.Data.SqlClient.SqlConnection.OnError(SqlException exception、Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior、SqlCommand cmdHandler、SqlDataReader dataStream、BulkCopySimpleResultSet bulkCopyHandler、TdsParserStateObject stateObj)で 私は再確認しましたが、ファイルパス、権限、またはディスク容量の問題ではありません。このCREATE DATABASEステップには2分ほどかかると思います。ウィザードは操作がタイムアウトしたと想定します。SQLを使用して同じファイルパスとファイルサイズで空のデータベースを手動で作成しましたが、うまくいきました。興味深いことに、1GBのデータベースコピーは同じエラーで失敗し、2回目の試行で成功しました。 助けてください。

3
未使用のデータベースをオフラインにすることによるパフォーマンス上の利点
私はいくつかの履歴を見る必要があるまで現在オフになっているVMで実行されるレガシーアプリケーション用のデータベースをいくつか持っています。これらのアプリケーションで使用される各データベースをオフラインに設定しましたが、知りたいと思います。 これらの未使用のデータベースを、オンラインに接続する代わりにオフライン状態にして、データベースに接続したりクエリを実行したりせずに未使用にすると、パフォーマンス上のメリットはありますか?

3
Mysqlはスワップの使用を開始するまでメモリをゆっくりと使用します
1 GBのRAMラックスペースデータベースサーバーを実行しています。なんらかの理由で約2日で、メモリ使用量は非常に少ないスワップの使用から100MBの使用に移行します。SQLを再起動しないと、より多くのスワップが使用され続けます。(私のmy.cnfファイルを以下に示し、メモリ使用量を以下に示します) 背景:テーブルにINNODBを使用する同じスキーマを持つアクティブデータベースが約50あります。MyISAMを使用するトラフィックの少ないデータベースがいくつかあります。 INNODBテーブルでは、永続的な接続を使用しません。一時テーブルを作成するレポート機能もあります。(これはリソースを集中的に使用する可能性がありますが、頻繁には発生しません) CENTOS 6.3とmysql 5.5.28-logを使用しています 私はスワップを使用していますが、パフォーマンスはかなり良好です。数日おきに再起動しないと問題が発生するのではないかと心配です。 約2日間の無料の-mのログは次のとおりです(最初のレコードはmysqlの再起動直後です)。 12/26 2:08 PM EST total used free shared buffers cached Mem: 992 697 295 0 74 362 -/+ buffers/cache: 260 732 Swap: 976 15 961 12/26 4:10 PM EST [root@php-pos-db ~]# free -m total used free shared buffers cached Mem: 992 …

2
可用性グループは、スケジュールされたジョブとSSISパッケージでどのように機能しますか?
AlwaysOn可用性グループのデータベースを使用して2つのSQL Serverをセットアップしています。 また、データベースに対して実行するジョブを設定しています。フェイルオーバー中に、セカンダリサーバーでジョブが引き続き実行されるようにするにはどうすればよいですか?ジョブとSSISパッケージを両方のマシンにインストールし、セカンダリマシンで手動で無効にする必要がありますか?フェイルオーバーの場合は手動で有効にしますか?またはこれを処理するための組み込み機能はありますか?

3
SQL Serverストアドプロシージャの条件付きコンパイル
ショートバージョン: Visual Studio 2010のSQL Serverデータツールを使用して、SQL ServerデータプロジェクトのTSQLコードのチャンクを条件付きでコンパイルする方法はありますか? Visual Studio 2010でSQL Serverデータツールを使用して、実験的なSQL Server Expressデータベースで作業しています。物事がうまく機能する場合の最終的な宛先は、エンタープライズSQL Serverプラットフォームです。私の会社は多くのエンタープライズデータベースについても2008から2012への移行を進めているため、あるボックスに2008インスタンスと別のボックスに2012インスタンスの両方を持っています。 私が使用した他のプログラミング言語では、プリプロセッサディレクティブを使用すると、コードベースの一部を条件付きで簡単にコンパイルできます。これの最も一般的な用途は、制限されたセクションに異なるプラットフォームの異なるコードを含めること、またはリリースビルドからデバッグ出力コードを除外することです。 これらの両方は、私が取り組んでいるいくつかのストアプロシージャで非常に役立ちます。このようなものはありますか?sqlcmd展開中に変数を使用して特定の値を交換できることはわかっていますが、それを使用して後続のコードのチャンクを含めたり除外したりする方法を理解できません。 例: #IF $(DebugVersion) = 'True' -- A bunch of useful PRINTs and what not #ELSE SET NOCOUNT ON #ENDIF #IF $(SSVersion) = '2012' SET @pretty_date = FORMAT(@some_date, 'dddd, MMM dd, yyyy') #ELSE SET @pretty_date = …

1
すべてのステートメントをログに記録するようにPostgreSQLを設定することによるパフォーマンスへの影響
Windows 7 64ビット上のPostgreSQL 9.2.2。 ファイルの設定log_statementでは、postgresql.confログに記録するステートメントを指定します(なし、DDL、データ変更、またはすべて)。設定はどの程度log_statement = 'all'パフォーマンスを低下させますか?これによりパフォーマンスが大幅に低下することを読みましたが、これらの主張は古い記事に由来するものlog_statement = 'none'です。


2
SQL Server 2012のリンクサーバーでKerberos認証が機能しない
Windows Server 2012でSQL Server 2012を実行している2つのSQL Serverを使用してDEV / TEST環境をセットアップしています。WindowsServer 2008でSQL Server 2005から移行していますが、これはすでに正常に稼働しています。 SQL Server 2012では、Kerberos認証が機能していません。 各サーバーには独自のActive Directoryアカウントがあり、Active Directoryユーザーとコンピューターを通じて「サービスプリンシパル名の書き込み」および「サービスプリンシパル名の読み取り」権限が付与されています。SQL Server 2005サーバーに接続して実行する場合: SELECT net_transport, auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SPID; そうですか: net_transport auth_scheme TCP KERBEROS 新しいSQL Server 2012インスタンスに対して同じクエリを実行すると、次のようになります。 net_transport auth_scheme TCP NTLM を使用SetSPN -Q MSSQLSvc/*してサービスプリンシパル名をアクティブドメインにクエリすると、サーバーの名前以外はまったく同じ方法で、2005サーバーと2012サーバーの両方が一覧表示されます。 例えば: MSSQLSvc/SERVERa2005.domain.inet MSSQLSvc/SERVERa2005domain.inet:1433 MSSQLSvc/SERVERb2005.domain.inet MSSQLSvc/SERVERb2005domain.inet:1433 MSSQLSvc/SERVERa2012.domain.inet MSSQLSvc/SERVERa2012domain.inet:1433 …

2
多くのmysql一時テーブルを同時に作成するのは悪いことですか?
一部のデータをユーザーに提供するために、重い統計分析を行う必要があります。現在、私はmysqlからデータをキャッチし、PHP配列を介して処理しています。ただし、mysql一時テーブルの方がはるかに優れています(PHP配列よりもはるかに効率的で高速です。そのメカニズムにより)。 私の暫定的な解決策は、データをインポートして処理するための各要求(つまり、接続)時に一時テーブルを形成することです。しかし、多くの一時テーブルを同時に作成することの欠点があるかどうかはわかりませんか? これはmysqlサーバーに問題を引き起こす可能性がありますか?または、多数の同時リクエストでPHP配列の代わりとして使用できますか?

4
InnoDB挿入の高速化
私はモンドリアンOLAPでOLAPを研究している大学院生です。そのため、最初の読み込みでデータをより速くInnoDB(MySQL 5.5)に挿入したいと考えています。この環境では、私しかユーザーがいないので、挿入速度をもっと緩やかに設定できると思います。現在、私は以下のテクニックを使用しています。 無効にする log_bin 可能にする skip-innodb-doublewrite セットtransaction_isolationにREAD-COMMITTEDかREAD-UNCOMMITTED(実際にREAD-COMMITED) セットinnodb_flush_log_at_trx_commitに0か2(実際に0) innodb_buffer_pool_size5GBに設定(システムには6GB RAMがあります) InnoDBに高速に挿入するためのテクニックは他にありますか?そして、私は変更する必要がinnodb_io_read_threadありinnodb_io_write_threadますか?さらに詳しい情報が必要な場合は、教えてください。

3
SQLは列に許可された値を設定
ALTER TABLE新しい列を追加してデフォルト値を設定し、さらにその列に許可される値を定義する式を作成したいと思います。これはテキスト列であり、許可されているのは「value1」、「value2」、および「value3」のみです。デフォルトは 'value1'である必要があります 以下の構文図によると: 私はここまで来ています ALTER TABLE exampleTable ADD COLUMN new_column VarChar(20) DEFAULT 'value1' しかし、私は許可された値を設定する方法が絶対にわかりません。 何かのように作ることは可能ですか CONSTRAINT CHECK new_column IN( '値1'、 '値2'、 '値3) ?search conditionダイアグラムは私をかなり混乱させることを認めなければなりません。

1
ON SCHEMAトリガーとON DATABASEトリガーの違いは何ですか?
具体的なスキーマイベント(ON SCOTT.SCHEMA)またはすべてのスキーマ(ON SCHEMA)でデータベーストリガーを作成できます。ただし、データベーストリガーを作成するときにON DATABASEを使用することもできます。それらの違いは何ですか?レガシーなものですか?ON DATABASEは、AFTER STARTUPまたはAFTER STARTUPを使用する場合に使用する必要があります。これは、データベースのみに確実に関連するためですが、ON SCHEMAを使用して実行されるものと同じものがON DATABASEを使用して実行される場合があるため、違いは何ですか?それに関するOracleのドキュメントで参照を見つけることができません。
8 oracle  trigger 

3
ユーザーがデータベースを削除できる理由を特定する
データベースを削除できるSQLサーバーユーザーがいます。以下のコードを実行して、SQL Serverでのユーザーの権限を確認しましたが、ユーザーがデータベースを削除する機能を特定できませんでした。このユーザーがdbを削除する方法を特定するのに役立つSQLスクリプトはありますか?データベースの削除を拒否するコマンドはありますか?(SSMSはユーザーをdbcreatorロールの一部として表示していません) select USER_NAME(p.grantee_principal_id) AS principal_name, dp.type_desc AS principal_type_desc, p.class_desc, OBJECT_NAME(p.major_id) AS object_name, p.permission_name, p.state_desc AS permission_state_desc from sys.database_permissions p inner JOIN sys.database_principals dp on p.grantee_principal_id = dp.principal_id order by principal_name 上記のクエリの出力は、役立つ場合、ユーザーに次の3つのレコードを提供します class_desc object_name permission_name permission_state_desc OBJECT_OR_COLUMN xp_cmdshell EXECUTE GRANT DATABASE NULL CONNECT GRANT DATABASE NULL CREATE DATABASE GRANT

1
48コアAMD Opteronボックスでの24の物理tempdbファイルによるTempDB競合
SQL Server 2005のインスタンスについて次の通知を受信しました。インスタンスのコアとtempdbファイルの比率は2:1で、tempdbファイルの総数は24ファイルです。競合は発生してはなりません。この競合の原因をどのように検出しますか?TempDBと他のすべてのデータベースは、10 GBイーサネット経由でSANストレージ上にあります。SANには、1つのRAID-60アレイに構成された46個の10k SASドライブがあります。このアレイは、複数のVMWareサーバーと1つまたは2つのExchangeサーバーで共有されます。 Idera SQL Diagnostic Managerからの通知: 11/8/2012 10:49:00 PM、MGSQL01のTempdb競合(ミリ秒)は重大です。 Tempdbラッチの競合がMGSQL01で検出されました。検出された合計待機時間は1782ミリ秒です。これは、tempdbの割り当てマップの競合によってパフォーマンスが影響を受けていることを示しています。これが定期的な問題である場合は、tempdbファイルの数、サイズ、およびIOサブシステムに関するベストプラクティスに従うことで軽減できる場合があります。 PFS待機時間:1782 ms GAM待機時間:0 ms SGAM待機時間:0 ms Tempdb競合(ミリ秒):tempdb割り当てマップ(GAM、SGAM、およびPFS)の現在の待機時間(ミリ秒単位)。このアラートは、SQL 2005以降を実行しているインスタンスでのみ発生する可能性があります。

3
SSMSのユーザーインターフェイス言語を変更するにはどうすればよいですか?
SQL Server Management Studioでユーザーインターフェイス言語を変更するにはどうすればよいですか? たとえば、英語でインストールしたが、日本語で表示したい場合(名前を付けるための1つの例)。 私はこの環境を[第一言語としての英語]以外の環境で実行しており、すべてのウィンドウで自然言語で読むことを望んでいます。(私の特定の自然言語はそれほど重要ではありませんか?)

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