データベース管理者

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

5
最適なsort_buffer_sizeを決定する方法は?
私は次のことを言うサンプル構成ファイルから読みました: # Sort buffer is used to perform sorts for some ORDER BY and GROUP BY # queries. If sorted data does not fit into the sort buffer, a disk # based merge sort is used instead - See the "Sort_merge_passes" # status variable. Allocated per thread if sort is …

2
列を動的にエイリアスするにはどうすればよいですか?
可変名の列が20あるテーブル(私が設計したものではない)があります。つまり、表示しているレコードのタイプに応じて、該当する列の名前が変わる可能性があります。 可能な列名は別のテーブルに格納されているため、非常に簡単にクエリできます。 したがって、私が本当に探しているクエリは次のようになります。 SELECT Col1 AS (SELECT ColName FROM Names WHERE ColNum = 1 and Type = @Type), Col2 AS (SELECT ColName FROM Names WHERE ColNum = 2 and Type = @Type) FROM Tbl1 WHERE Type = @Type 明らかにそれはうまくいかないので、どうすれば同様の結果を得ることができますか? ' クエリ文字列を作成してEXECUTEing しようとしましたが、「Command(s)Completed Successfully」が返され、行セットが返されないようです。 不正なクエリを使用して動的SQLを作成していたため、空の文字列が作成されたことがわかりました。SQL Serverは空の文字列を正しく実行しました。 列名を単にハードコーディングするのではなく、これを実行する必要がある理由は、列名がユーザーが構成できるためです。

1
データベースプロジェクトでOPENQUERYを使用したリンクサーバーを使用する
SQL Server 2008でTFSに投入したいデータベースを実行しています。したがって、私はDBをインポートしたVisual Studio 2013データベースプロジェクトを使用しました。たくさんのエラーを修正した後、エラーが1つだけ残っています。 1つのビューではOPENQUERY、リンクサーバーへのアクセスに使用される開発者。そこで、適切なデータベースを含むDACPACをインポートAdd Database Referenceし、次の参照オプションを使用してプロジェクトに追加しました。 スクリプトの初期バージョン 以下は、元のビュー作成の短いバージョンです。 CREATE VIEW dbo.vwStatus AS SELECT StatusID, StatusName FROM OPENQUERY(LinkedServer, 'SELECT * FROM [DB].[dbo].tbStatus') AS derivedtbl_1 これにより、次のエラーが発生します。 エラー136 SQL71501:ビュー:[dbo]。[vwStatus]には、オブジェクト[LinkedServer]への未解決の参照があります。 最初の試み それで、サーバー名変数を挿入しようとしました FROM OPENQUERY($(LinkedServer), 'SELECT * FROM [DB].[dbo].tbStatus') AS derivedtbl_1 につながる エラー176 SQL46010:$(LinkedServer)付近の構文が正しくありません。 さらなる試み 私は少し手探りで次のことを試しました(引用符付き識別子を有効にした場合と有効にしない場合): FROM OPENQUERY("$(LinkedServer)", 'SELECT * FROM [DB].[dbo].tbStatus') AS …

1
「2つのテーブルから離れた」制約の適用
SQLで電気回路図をモデリングするときに問題が発生しました。キャプチャしたい構造は part ←────────── pin ↑ ↑ part_inst ←───── pin_inst ここで、「inst」は「instance」の略です。 例えば、私のように持っているかもしれないpartとのLM358オペアンプpinの1OUT、1IN-、1IN +、GND、2IN +、2IN-、2OUT、およびV CC。次に、このパーツを回路図に配置して、a part_instと8を 作成しpin_instます。 データフィールドを無視して、スキーマでの最初の試みは create table parts ( part_id bigserial primary key ); create table pins ( pin_id bigserial primary key, part_id bigint not null references parts ); create table part_insts ( part_inst_id bigserial primary key, part_id …

4
暗号化された/暗号化されたデータを持つSQL Server 2008 R2のすべての列をすばやく見つける方法はありますか?
暗号化された/暗号化されたデータを持つSQL Server 2008 R2のすべての列をすばやく見つける方法はありますか? 開発サーバーの暗号化されたすべての列のデータを(ビジネスルールに従って)無効にする必要があります。私は定期的に使用しているため、ほとんどの列を知っていますが、徹底し、すべての列が見つかったことを証明できるようにしたいと考えています。 私はWebを検索し、INFORMATION_SCHEMAを調べて、有用だと思われるDMVとsys.columnsとsys.objectsを確認しましたが、今のところうまくいきません。

3
SSRSレポートで行を非表示にする方法は?
SSRS 2008で合計割り当てと両方の列の合計コストが0であるレポートでこれらの行を非表示にするにはどうすればよいかを理解しようとしています。 例えば: 総配分総実費 0 0 <----非表示 100,00 0 <----隠さない 0 50,0000 <----隠さない これがスクリーンショットです: ありがとうございました

3
シーケンスを使用する列を持つテーブルを作成するにはどうすればよいですか?
私は以下を持っています CREATE TABLE [MyTable] ( [ID] [bigint] PRIMARY KEY NOT NULL, [Title] [nvarchar](64) NOT NULL ) CREATE SEQUENCE MyTableID START WITH 1 INCREMENT BY 1 NO CACHE ; GO MyTableに新しいレコードを挿入し、IDをシーケンスの次の値に設定します。どうすればできますか?おそらくトリガー、または他の方法がありますか?どうやって? SQL Server 2012 を使用しているため、ギャップバグのため、Identityを使用したくありません。

1
MySqlサーバーのパフォーマンスが遅い-何を確認する方法
開始:免責事項 私はMySql Server DBAではありません。私はほとんどMSSQLについて知っています。そのため、あなたの助けが必要です。 終了:免責事項 MySqlサーバーエンジンのパフォーマンスが低い理由を確認するように求められました-関連するデータベースを見たことも保持したこともないので、どこから始めればよいか知りたいです。 どこから始めますか? MySqlにアクセスできるユーザーにどのような質問をする必要がありますか。phpmyadminや他のツールを使用しているかどうかもわかりません。 基本的に: どのようなアイテムを要求する必要がありますか。また、提供する各アイテムにどのように応答しますか? 問題がデータベースのパフォーマンスにあるときに要求する重要な項目は何ですか? MSSQL sp_who2で既存の接続をチェックして、何かがブロックされているかどうかを確認できますが、mysqlの対応は何ですか?*各アイテムにはさまざまな種類の結果が存在する可能性があるため、具体的である必要はありませんが、ユーザーに影響を与えているため、ボールが回転するのを手助けしたいと思います。

1
OUTER JOIN内にネストされたINNER JOINの構文とクエリ結果
TLDR; 2つの実行プランを見ると、どちらが良いのか簡単な答えはありますか?意図的にインデックスを作成しなかったので、何が起こっているのかを簡単に確認できます。 異なる結合スタイル(つまり、ネストされたものと従来のもの)の間のクエリパフォーマンスの違いを発見した私の以前の質問をフォローアップして、ネストされた構文もクエリの動作を変更することに気付きました。次の2つのクエリについて考えます。 SELECT a.*, m.*, n.* FROM dbo.Autos a LEFT JOIN dbo.Models m JOIN dbo.Manufacturers n -- <-- Nested INNER JOIN ON n.ManufacturerID = m.ManufacturerID ON m.ModelID = a.ModelID これは、Modelsテーブルにない ModelIDを持つ自動行を含めるために、製造元を結合する必要はありません。 従来の構文を使用して、結合をManufacturesから外部結合に変更する必要があります。ただし、これによりクエリプランが変更されます。 SELECT a.*, m.*, n.* FROM dbo.Autos a LEFT JOIN dbo.Models m ON m.ModelID = a.ModelID LEFT JOIN …

2
データベースのプロパティダイアログボックスの[ファイル]ページからデータベースの所有権を変更するとエラーが発生する
データベースを復元し、db_ownerとして新しいユーザー(ログイン元と同じユーザー)を作成しました。データベースダイアグラムを表示したいときにエラーが発生しました このデータベースには有効な所有者がいないため、データベースダイアグラムサポートオブジェクトをインストールできません。続行するには、まず[データベースのプロパティ]ダイアログボックスの[ファイル]ページまたは[承認の変更]ステートメントを使用して、データベース所有者を有効なログインに設定し、次にデータベースサポートオブジェクトを追加します データベースプロパティの[ファイル]ページから所有権を変更しようとすると、次のようなエラーが発生します。 データベース 'ABC'の所有者の設定に失敗しました。(Microsoft.SqlServer.SMO)追加情報:SMOで例外が発生しました提案された新しいデータベース所有者James-PC \ Jamesは、ユーザーJamesとしてこのデータベースにマップされています。パラメータ名:James-PC \ James " 別のシステムからデータベースのバックアップを復元した後、このコンピューターでデータベースダイアグラムを表示できるように、問題を修正してください。

1
mysqlでLOAD DATA LOCAL INFILEを有効にする
LOAD DATA LOCAL INFILEデフォルトでは有効になっていません。通常は、に配置することlocal-infile=1で有効になりmy.cnfます。ただし、すべてのインストールで機能するわけではありません。私の経験では、Debian 7では機能しましたが、Debian 7ミニマルでは機能しませんでしたが、どちらのインストールも同じプリコンパイル済みのdebパッケージからのものです。OpenVZ VPSの両方で。 なぜデバッグする方法local-infile=1インストールのための仕事、そしてどのように安全にアクティブにするためにはありませんかLOAD DATA LOCAL INFILE?

2
複数日にわたるDBCC CHECKDBの分割
Paul Randal がDBCC CHECKDBを手動で数日間に渡って分散する、非常に大規模なデータベースの実装に取り​​組んでいます。 データベース内のテーブルを7つのバケット間でほぼ均等に分割する 週2回のDBCC CHECKALLOCの実行 週に1回、DBCC CHECKCATALOGを実行する 曜日ごとに1つのバケットでDBCC CHECKTABLEを実行する 誰かがこのテクニックを使用しましたか?既存のスクリプトはありますか? これが実際にCHECKDBが行うすべてをカバーしていないのではないかと心配しています。CHECKDBのBooks Onlineドキュメントでは、CHECKALLOC、CHECKCATALOG、およびCHECKTABLEに加えて、次のことも述べられています。 データベース内のすべてのインデックス付きビューの内容を検証します。 FILESTREAMを使用してファイルシステムにvarbinary(max)データを格納するときに、テーブルメタデータとファイルシステムディレクトリおよびファイルの間のリンクレベルの整合性を検証します。(SQL 2008のみ) データベース内のService Brokerデータを検証します。 だからここに私の質問があります: これらの追加のチェックは必要ですか/重要ですか?(インデックス付きビューは、おそらく私にとっては少し心配です。まだService BrokerやFILESTREAMを使用しているとは思いません。) もしそうなら、これらの追加のチェックを個別に実行する方法はありますか? CHECKALLOCとCHECKCATALOGは、大きなdbでも非常に高速に実行されるようです。これらを毎日実行しない理由はありますか? (注:これは、数百のサーバーにわたる数千の既存のデータベース、または少なくとも特定のサイズを超えるすべてのデータベースの標準ルーチンになります。つまり、CHECKFILEGROUPを使用するようにすべてのデータベースを再構築するようなオプションは、実際には実用的ではありません。)

3
大きなバッチの挿入速度
私のアプリケーションでは、INSERTにかなりの時間がかかっているようです。テーブルに挿入するオブジェクトがメモリ内に多数(約40〜50,000)あります。 サンプルテーブルを見てみましょう CREATE TABLE bill ( id BIGINT(20) PRIMARY KEY, amount INT(11) DEFAULT 0, bill_date DATETIME DEFAULT NOW(), INDEX (bill_date) ) ENGINE=InnoDB 私のバッチサイズとして3行を取ると、以下は挿入するために考えられるアプローチです アプローチ1-3つのrawインサートを作成して起動する INSERT INTO bill (amount, bill_date) VALUES (10, '2012-01-01 00:00:00'); INSERT INTO bill (amount, bill_date) VALUES (20, '2012-01-02 00:00:00'); INSERT INTO bill (amount, bill_date) VALUES (40, '2013-02-05 …
10 mysql  innodb  insert  java  jdbc 

1
SQLiteデータベースのロックを防ぐにはどうすればよいですか?
SQLite FAQから私はそれを知っていました: 複数のプロセスが同じデータベースを同時に開くことができます。複数のプロセスが同時に実行できますSELECT。ただし、いつでもデータベースに変更を加えることができるプロセスは1つだけです。 だから、これまで私は私ができる理解限り:1)複数のスレッドからの読み取りデシベル(SELECT複数のスレッド(から)2)リードデシベルSELECTシングルスレッドから)と書き込み(CREATE、INSERT、DELETE) しかし、リーダーはライターをブロックせず、ライターはリーダーをブロックしないため、同時実行性が向上する先行書き込みロギングについて読みました。読み取りと書き込みは同時に実行できます。 最後に、指定されたとき、私はそれを見つけたときに完全に混乱しました: SQLITE_LOCKEDエラーが発生するその他の理由は次のとおりです。 しようとしCREATEたりDROPしながら、テーブルやインデックスSELECTの文はまだ保留されています。 SELECT同じテーブルでがアクティブなときにテーブルに書き込もうとしています。 SELECTsqliteがそのように設定されていない場合に、マルチスレッドアプリケーションで同じテーブルに対して同時に2つを実行しようとする。 DBファイルのfcntl(3、F_SETLK呼び出しが失敗します。これは、たとえばNFSロックの問題が原因である可能性があります。この問題の1つの解決策は、DBを移動してコピーし、新しいInode値を持つようにコピーすることです。 だから、私は明確にしたいのですが、ロックを回避する必要がありますか?2つの異なるスレッドから同時に読み書きできますか?ありがとう。
10 locking  sqlite 

3
コマンドラインを使用したPostgreSQLポートの変更
私のPostgreSQLのデフォルトポートは5432ですが、コマンドラインを使用してデフォルトのポートを変更したいと思います(Windows 7の場合)。 私は以前にこの解決策を見ました:https : //stackoverflow.com/questions/187438/want-to-change-pgsql-port 次のコマンドを実行しようとしましたが、失敗しました: postgres --p 5431 コマンドラインを使用してポートを変更する方法を誰かに教えてもらえますか?

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