データベース管理者

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


3
同じテーブルに基づくUPDATEテーブル
製品の説明を含む表があり、各製品の説明にはとがproduct_idありますlanguage_id。私がやりたいのは、すべてのフィールドをで更新し、language_idがである場所2と同じになるようにすることです。product_idlanguage_id1 これまでのところ、次のクエリを試しましたが、テーブルがサブクエリでも使用されているテーブルをMySQLが更新したくないことを示すエラーが表示されています。 UPDATE products_description AS pd SET pd.products_seo = ( SELECT pd2.products_seo FROM products_description AS pd2 WHERE pd2.language_id = 1 AND pd2.products_id = pd.products_id ) WHERE pd.language_id <> 1 MySQLのこの制限を回避する「簡単な」方法はありますか?それとも「トリック」ですか?論理的に思えるので、クエリが機能しないことに少し驚いています。
12 mysql  update 

2
すべてのリレーショナルデータと共にデータをエクスポートするツールですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、データベース管理者のStack Exchangeのトピックになるようにします。 5年前に閉鎖されました。 リレーショナル設計によってリンクされた他のテーブルの他のテーブルに保存されているすべてのデータとともに、テーブルの選択された行からデータをエクスポートするツールはありますか? 目的は、アドホック移行のためにサーバー間でデータのビットの移行を容易にすることです。定義された外部キーを持つMySQL InnoDBのツールを特に探しています。

1
SQL Serverトランザクションバックアップとログ
中規模のビジネスクリティカルなSQL Server 2008データベースを継承し、バックアップ計画に頭を悩ませようとしています。(私はDBAではなく開発者です。) 現在のシステムのセットアップ方法には、2つのバックアップシステムがあります。 毎週の完全バックアップ(.bak)および1時間ごとのトランザクションログ(.trn)バックアップ。これらのバックアップは数セット保持され、定期的にオフサイトで出荷されます。 .ldf復旧モデルがに設定されたSQL Serverログ()Full。このファイルはメイン.mdfファイルとは別のドライブにありますが、それ以外の場合はバックアップされません。 緊急リストアの場合(または、バックアップを開発マシンにリストアする場合)、私の手順は.bakファイルを使用してから.trnファイルを適用することです。この手順を比較的簡単にするスクリプトがあります。 私の質問: .ldfファイルからデータベースを復元することは可能ですか?それは何のためですか? これらのトランザクションログの両方を保持することは不必要に冗長ですか? .ldfファイルをバックアップすることは重要ですか?

4
CLUSTER後にREINDEXが必要ですか?
CLUSTERを使用して、インデックスでテーブルを並べ替えることを検討しています。このテーブルデータの再作成により、既存のすべてのインデックスが肥大化するか、役に立たなくなることがわかります。CLUSTERの後にREINDEXが必要であるという兆候を見てきました。CLUSTER が REINDEXを行うことを示す他の参照を見つけました。公式ドキュメントは、(それがCLUSTER後にANALYZEを実行している示唆んが)REINDEXがクラスタの一部である、または必要についてのすべてでは何も言いません 誰もが明確に(つまり、公式ドキュメントへの何らかの参照を持っている)、CLUSTER後にREINDEXが必要かどうかを言うことができますか?
12 postgresql 

1
SQL Server LocalDBインスタンスのフォルダーをデフォルトの場所から移動する方法は?
私は複数のエラーを取得していないLocalDB(起動エラー、SQL Server Management StudioのからDBを作成することはできませんし、また、複数の 問題バックアップを復元しようとすると)、私は何を支援している見つけ修正のどれも。すべてのエラーは、正しく設定されていないアクセス許可に基づいているようです。 これで、簡単なDDLテーブル作成スクリプトがSQL Server Management Studioから正常に機能し、ユーザーアカウントのフォルダーのルートにデータベースを作成します(ここで説明します)。ただし、Instancesフォルダー(SQL Server ExpressとAdvanced ServicesをD:\Users\[My name]\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instancesインストールするときに別の場所にDATAフォルダーを指定しました-標準のSQL Server Express ファイルのみが保存され、インスタンスは保存されません)ルート)したがって、プロジェクト内の場所にDBファイルを配置するために、Instancesフォルダーを別の場所に移動したいと思います。これは可能ですか?対応するレジストリエントリも見つけられませんでした。.mdfLocalDB SQL Server Express 2012と同じバージョンのSSMS(最新の更新プログラムがインストールされています)を使用しています。 任意の助けをいただければ幸いです。 編集: KookieMonsterが前述した[データベースの設定]ページでエラーがスローされ、編集や構成の表示ができません。Windows Updateで更新プログラムを再度チェックし、インストールされていないSQL Server Expressの更新プログラムがいくつかあったので(インストールするものはすべて選択したはずですが)、それらをインストールしました。これにより、設定ページに移動できました。 LocalDBインスタンスのルートフォルダーを別の場所に設定しようとしましたが、試したすべてのフォルダーに対してアクセス拒否エラーが発生しました。つまり、 設定 'Microsoft.SqlServer.Management.Smo.ObjectKeyBase'の変更に失敗しました。(Microsoft.SqlServer.Smo) - - - - - - - - - - - - - - - 追加情報: Transact-SQLステートメントまたはバッチの実行中に例外が発生しました。(Microsoft.SqlServer.ConnectionInfo) …

5
Azure SQL Databaseから不適切な実行プランを削除するにはどうすればよいですか?
DBCC FREEPROCCACHEAzure SQL DBでは機能しません。どうすれば、実稼働システムを傷つけないように計画を強制的にキャッシュから追い出すことができますか(つまり、テーブルを自由に変更することはできません)。これは特にEntity Frameworkによって作成されたSQL向けであるため、これらは自己管理型のストアドプロシージャではありません。事実上動的なSQLです。 (ソースは悪いインデックス->悪い統計などでした。それはすべて修正されましたが、悪い計画は消えません。) 更新: 彼が最初に到着したとき、@ mrdennyのソリューションを選択しました。ただし、@ Aaron Bertrandのスクリプトを使用して作業を正常に実行しています。みんな助けてくれてありがとう!!

3
連結物理操作:実行の順序を保証しますか?
標準SQLでは、aの結果のunion all順序は保証されていません。だから、次のようなもの: select 'A' as c union all select 'B' 任意の順序で2つの行を返すことができます(ただし、実際に知っているデータベースでは、「A」が「B」よりも前になります)。 SQL Serverでは、これは「連結」物理操作を使用した実行計画になります。 連結操作が入力をスキャンし、使用可能なレコードがある入力をすべて返すと簡単に想像できます。しかし、私はウェブ上で次の文を見つけました(ここ): クエリプロセッサは、計画に演算子が表示される順序でこの計画を実行します。最初の計画が一番上で、最後の計画が最後です。 質問:これは実際には本当ですか?これは真実であることが保証されていますか? Microsoftのドキュメントには、入力が最初から最後まで順番にスキャンされるという参照は見つかりませんでした。一方、実行しようとすると、結果は、入力が実際に順番に処理されていることを示唆しています。 エンジンが一度に複数の入力を処理する方法はありますか?私のテスト(定数よりもはるかに複雑な式を使用)は、並列対応の8コアマシン上で実行され、ほとんどのクエリは並列処理を利用しています。

2
「アーカイブされているが使用可能な」データのSQL Serverデータベース設計
「縮小」しようとするこの大規模なデータベース(1 TBを超える)があります。データベースは1つの主要なエンティティを中心に展開するため、「訪問」と呼びましょう。議論のために、それが医療行為のデータベースであるとしましょう。 手続き、年次、フォローアップ、予防接種など、合計30の訪問「タイプ」があり、それぞれが「visit_immuno」などの「Visit」への補助表です。 データベースには、2000年以降約12年間のデータが蓄積されています。「ライブ」バージョンに約3年間のデータを保持し、残りを「old_data」データベースに保持することを提案する人がいます。日付は正規化されているため、「Visit」テーブルにのみ保存されます。Visitテーブルには、ROWVERSION列とBIGINT疑似ID(クラスター化)列も含まれます。すべての意図と目的のために、クラスタリングキーにSEQUENCE(SQL Server 2012 Enterprise)が入力されているとしましょうcid。 visit.date医師がデータの彼の「ブリーフケース」を拡張訪問し、リターンになったとき、それはメインテーブルにマージされます例えば、クラスタリング・キーと同じ順序で常にではありません。また、「visit」テーブルにいくつかの更新があり、ROWVERSION列がcidとdate列の両方と同期しなくなります-簡単に言えば、この理由のために適切なパーティションキーを作成することもできROWVERSIONませんcid。 「ライブ」からデータを取り出すためのビジネスルールは、ということであるvisit.date36ヶ月よりも大きくなければなりませんし、子visit_paymentレコードが存在している必要があります。また、「old_data」データベースには、を除くベーステーブルは含まれていませんvisit%。 したがって、次のようになります。 Live DB(毎日使用)-すべてのテーブルOld-Data DB- visit%テーブルの古いデータ 提案では、2つのデータベースのテーブル全体でALLを結合するビュー(およびを除く)のすべてのベーステーブルに対するシノニムを含むシェルである結合DBが必要です。Live DBvisit%visit% 同じインデックスがOld-DataDBに作成されていると仮定すると、クエリはUNION-ALL ビューで適切に実行されますか?UNION-ALL ビューの実行計画をどのような種類のクエリパターンがトリップするか?

2
列定義の先頭または末尾に列エイリアスを配置することに違いはありますか?
私はいつも列エイリアスを次のように見て、書いてきました SELECT 1 as ColumnName しかし、今日使用したクエリに出くわしました SELECT ColumnName = 1 これら2つのクエリの実行方法に違いはありますか?または、どちらを使用するかについて、DBA間に標準はありますか? 個人的に私は、第二は、読み取り/(良い例を長い列定義に維持することが容易になるだろうと思いますここからこの記事私はすべきではない、いくつかの理由がある場合)、しかし、私は今日はとても疑問に思って前に使用第二構文を見たことがありませんそれを使用します。

3
SQL Serverのアクセス許可でADセキュリティグループを更新する方法
Small Business Server 2003でSql Server 2008を使用しています。クライアントはWinXPを使用しています。 Active Directoryセキュリティグループにユーザーを追加しました。このユーザーがすぐにデータベースにアクセスできないのはなぜですか?ユーザーがSql Serverで認識されるまでに遅延があるようです。 権限にADセキュリティグループを明示的に使用しているため、SQL Serverに個々のユーザーを追加する必要はありません。事実上、アクセスを許可するためにユーザーをADセキュリティグループに追加する以外に何もする必要はありません。 しかし、何らかの理由で、SQL Serverは追加をすぐには認識しません。私はこれを何度も見ました。ユーザーをグループに追加しましたが、そのユーザーは翌日までデータにアクセスできません。Active Directoryをリアルタイムで照会しないようです。そうだと確認できますか? Sql ServerがActive Directoryからユーザーのリストを「更新」するために何をする必要がありますか?

2
最長連続シーケンスを選択
特定の列の連続する行の最長シーケンスを取得するPostgreSQL 9.0でクエリを作成しようとしています。 次の表を考慮してください。 lap_id (serial), lap_no (int), car_type (enum), race_id (int FK) どこlap_noがそれぞれに一意です(race_id, car_type)。 クエリで指定されたrace_idandの最長のシーケンスを生成car_typeしたいので、int最高の(または長い)を返します。 次のデータで: 1, 1, red, 1 2, 2, red, 1 3, 3, red, 1 4, 4, red, 1 5, 1, blue, 1 6, 5, red, 1 7, 2, blue, 1 8, 1, green, 1 car_type = …

3
孤立したユーザーを見つける
SQL Server 2005には、サーバーレベル(サーバーレベルで削除されたが、削除される前にデータベースから関連付け解除されなかったアカウント)に存在しないユーザーまたはリンクされていないアカウントを見つける方法があります(アカウントはサーバーレベルで削除されたが、データベースレベルではなく削除された可能性があるが、データベースレベルはクリーンアップされなかった)。 私は非常に乱雑なサーバーを持っているので、これらを見つけるために実行するクエリがあれば素晴らしいでしょう。

3
Oracleで一重引用符を使用せずに文字列から抜け出し、SQLを注入する方法はありますか?
Oracleベースのアプリケーションをテストしていますが、次のコードが見つかりました。 クエリ= "従業員から名前を選択WHERE id = '" + PKID + "';" つまり、クエリ文字列には、URLから直接取得されたPKID値を引用符で囲みます。 明らかに、これは起こるのを待っている古典的なSQLインジェクションです...ただし、アプリケーションはCA SiteMinderの背後にあり、単一引用符で囲まれたURLを(任意の形式で)アプリケーションに渡されないようにブロックします。 文字列から抜け出し、一重引用符を使用せずにSQLを挿入する方法はありますか? 編集:申し訳ありませんが、私は明確にすべきだった-私はそれがどのように書かれるべきか理解していますが、私はそれが悪用可能な問題であることを人々に説得する必要があります。現時点では、単一引用符をブロックするsiteminderの背後にあるため、優先度の低い修正になります。

2
DMVを読み取るときにREAD UNCOMMITTEDを設定する
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTEDシステムDMVを読む前に何人かの人が電話するのを見てきました。同じトランザクションでDMVとテーブルへの呼び出しを混在させないと仮定して、これを行う理由はありますか?
12 sql-server  dmv 

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