データベース管理者

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

2
mysqladminがインラインパスワードを取得しない
スレーブマシンからバックアップを取るためのcronジョブを設定しようとしています。だから私はスレーブを停止する必要があります コマンドを発行しました mysqladmin --user=root --password=test_pass stop-slave しかし、それはエラーを投げています: mysqladmin: 'localhost'でサーバーに接続できませんでしたエラー: 'ユーザー' root '@' localhost 'のアクセスが拒否されました(パスワードを使用:YES)' 今、私はコマンドで試しました mysqladmin --user=root --password stop-slave パスワードを要求するプロンプトが表示され、私は次のように指定test_passしました。すべて問題ありませんでした。 なぜそうなったのですか?代替は何ですか? 注意:ちなみに私のmysqlのバージョンはですmysql-5.0.95-5。それは意味があります。

1
テーブルが存在するのに「ORA-00942:テーブルまたはビューが存在しない」を取得する
私はOracleデータベースにかなり慣れていません。にインストールしOracle Database 11g R2ましたOracle Linux 6。私は正常に新しいデータベースを作成し、それdbcaを使用してデータベースに接続しました: $ sqlplus "/ as sysdba" 私は正常にテーブルを作成し、いくつかのデータを挿入して、いくつかの選択を実行しました: SQL> CREATE TABLE Instructors ( tid NUMBER(7) PRIMARY KEY, fname VARCHAR2(32), lname VARCHAR2(32), tel NUMBER(16), adrs VARCHAR2(128) ); Table created. SQL> INSERT INTO Instructors (tid, fname, lname, tel, adrs) VALUES (8431001, 'John', 'Smith', 654321, 'London'); 1 row created. …

3
データベースサイズ-MDFが大きすぎますか?
約2.9TbのデータをホストするSQL Server 2005データベースを維持しています(2 x 1.45Tb-RAWスキーマとANALYSISスキーマがあるため、基本的にデータの2つのコピーが取り込まれます)。リカバリモデルはシンプルで、6 .ldfGBです。 何らかの理由で、.mdf7.5Tbです。現在、ANALYSISテーブルには2〜3列しか追加されておらずNVARCHAR(MAX)、私が誤って理解している可能性があるため(間違っている場合は修正してください)、追加のスペース割り当てを引き起こしている可能性がある列は多くありません。これは、データベースを圧縮した直後です。その前は、約9 TBでした。何かご意見は? そして、追加の質問がある場合はお知らせください-私はデータベース管理と最適化の取り組みに非常に慣れていません(私は通常、仕事のこの側は行いません:))。 どうもありがとう! アンドリヤ

1
トランザクションにSelectステートメントを置く
これら2つのクエリの違いは何ですか。 START TRANSACTION; SELECT * FROM orders WHERE id=1; UPDATE orders SET username='John' WHERE id=1; COMMIT; そしてトランザクションなし: SELECT * FROM orders WHERE id=1; UPDATE orders SET username='John' WHERE id=1; SELECTトランザクション内での影響は何ですか? 場合はDELETE FROM orders WHERE id=1、右の後に別のセッションから呼び出されたSELECT両方のケースでは、ときそれが処理されるのですか?

4
PostgreSQLで行ごとに一意のカウンターを維持するにはどうすればよいですか?
document_revisionsテーブルに一意の(行ごとの)リビジョン番号を保持する必要があります。リビジョン番号はドキュメントにスコープが設定されているため、テーブル全体ではなく、関連するドキュメントに対してのみです。 私は最初に次のようなものを思いつきました: current_rev = SELECT MAX(rev) FROM document_revisions WHERE document_id = 123; INSERT INTO document_revisions(rev) VALUES(current_rev + 1); しかし、競合状態があります! 私はそれをpg_advisory_lockで解決しようとしていますが、ドキュメントは少し不足していて、完全に理解していません。誤って何かをロックしたくありません。 以下は許容されますか、それとも間違っていますか、それともより良い解決策がありますか? SELECT pg_advisory_lock(123); current_rev = SELECT MAX(rev) FROM document_revisions WHERE document_id = 123; INSERT INTO document_revisions(rev) VALUES(current_rev + 1); SELECT pg_advisory_unlock(123); 代わりに、特定の操作(key2)のドキュメント行(key1)をロックするべきではありませんか?だからそれは適切な解決策でしょう: SELECT pg_advisory_lock(id, 1) FROM documents WHERE id = …


2
SQL Server 2012を2008 R2が既にインストールされているマシンにインストールできますか?
私はかなり前からSQL Server 2008 R2を使用していますが、うまく機能しています。SQL Server 2012を使用する必要があります。これは既存のデータベースに影響しますか?SQL Server 2008 R2が実行されているマシンにSQL Server 2012をインストールする場合、どの程度のリスクが伴いますか?

1
レコードのメタデータを保存するためのベストプラクティス
個々のレコードのメタデータをデータベースに保存するためのベストプラクティスは何ですか? データベース内の多くのテーブルの作成時刻や最終更新時刻などの一般的なメタデータを保存する必要があります。私はいくつかの異なる解決策を見つけました: メタデータをテーブルに直接保存します。 長所: メタデータはレコードに直接リンクされています メタデータを取得するために結合は必要ありません 短所: 多くの重複列が必要です(継承が使用されている場合を除く) メタデータとビジネスデータは分離されていません で一般的なメタデータテーブルを作成し、ソフト外部キーを使用してデータを正しいテーブルとレコードにリンクします。 長所: 列の重複なし メタデータはビジネスデータから分離されています 短所: メタデータとデータ間の直接リンクなし(FKは使用できません) 結合には追加の条件が必要です メタデータを必要とするテーブルごとに個別のメタデータテーブルを作成します。 長所: メタデータはレコードに直接リンクされています メタデータはビジネスデータから分離されています 短所: 追加のテーブルがたくさん必要です 多くの重複列が必要です(継承が使用されている場合を除く) ここで述べたものよりも多くのオプション、長所または短所はありますか?そして、このメタデータを保存するためのベストプラクティスは何ですか?

2
データベースダイアグラムを表示するために必要な権限
最近、開発者が使用できるようにSSDTを設定しました。開発者データベースへの変更は、サーバー(db_datareader、db_datawriter)に接続したときに各開発者が持つ権限を制限することにより、SSDTを介して行われます。SSDT内では、昇格されたアクセス許可を持つログオンを使用して接続する展開スクリプトを使用して、データベースへの変更を公開します。 私の質問。データベースをロックダウンするために(スキーマのドリフトを停止するために)この長さになっていることを考えると、開発者がdb_owner権限なしでこのデータベースの図を表示できる方法はありますか?各開発者が自分の図を作成して表示できることは知っていますが、多くの異なる開発者が作成したすべての図を表示できるようにしたいと思っています。 これは役に立たないと思いますが、SQL Server 2012を実行しています どんな助けも大いに受けられます。

3
2つのNULL可能列には値が必要です
説明なしの質問: とにかく、常に1が値を必要とする2つのnull値の制約を持つことはありますか?たとえば、2つの日付列はどちらもnullですが、値が必要な1 つ以上の列があります。 問題の説明: Expenseというテーブルがあるとします そして2つの日付があります: prevision_expense_expiration_date DATE NULLABLEense_payment_date DATE NULLABLE これら2つの列のロジックは次のとおりです。 私は何かを購入しましたが、電話代のような日付で支払う必要があることはわかっています。私はこれをexpense_payment_dateとともに費用として入力します。この日付は支払い予定日ですが、請求書の有効期限のような実際の支払い日ではありません。 他の状況では、あるサービスのギフトカードを販売しています。私があり、サービスが私のクライアントに転送私のプロバイダに購入の費用を持っているだけで、クライアントはカードを引き換える場合。したがって、ギフトカードには有効期限があります。ギフトカードが有効な期間の費用として挿入せずに、その「費用」を予測します。ギフトカードの有効期限が切れた場合、その「費用」はアカウントに入力しないでくださいシステム。 prevision_expenseとconfirm_expenseと呼ばれる2つの同等のテーブルを使用できることはわかっていますが、適切に聞こえないため、同じテーブルに2つの日付があり、nullを指定できますが、常に必要になるように制約または何かしたいです。 別の可能な戦略があります: payment_date DATE NOT NULL is_prevision_date BOOL NOT NULL したがって、この場合、日付がプロビジョニングの場合、ブール値は1になります。それ以外の場合は、0になります。null値はなく、すべて良好です。ただし、最初に予測日があり、THEN(2日後と言います)にその費用の確認日があるときに両方の値を保存するオプションが必要な場合を除きます。この場合、戦略2では、そのオプションはありません。 私はデータベース設計ですべてを間違っていますか?:D

2
SSRS(SQL Server 2012)を構成して、SharePointと同じサーバーを別のインスタンスで実行する方法
Windows 2008R2で実行されているSQL Server 2012のインスタンスと、SharePointを実行しているSQL Server 2012の別のインスタンス(SharePoint 2010だと思います)があります。 私がアクセスしようとすると、http://localhost/Reports_<InstanceName>私は得ています: 証明書の警告(私は続行します-私はこれについて本当に気にしません-その開発マシンです) 次のテキスト: Cannot connect to the configuration database. Googleは、そのエラーメッセージはSharePoint関連であると言っているので、SharePointがSSRSリクエストをハイジャックしていると思いがちです。 レポートサーバーにアクセスできるようにするために、SSRSまたは他の何か(IISか??)に対して行うことができる構成はありますか? 注:SSMS経由でReporting Servicesに問題なく接続できます。

3
反復可能読み取りの不整合
http://www.postgresql.org/docs/9.2/static/transaction-iso.html 反復可能読み取りモードは、各トランザクションがデータベースの完全に安定したビューを見ることを厳密に保証します。ただし、このビューは、必ずしも同じレベルの同時トランザクションのいくつかの(一度に1つの)逐次実行と常に整合しているとは限りません。たとえば、このレベルの読み取り専用トランザクションでも、バッチが完了したことを示すように更新された制御レコードが表示されますが、制御レコードの以前のリビジョンを読み取ったため、論理的にバッチの一部である詳細レコードの1つは表示されません。 。この分離レベルで実行されているトランザクションによってビジネスルールを適用しようとすると、競合するトランザクションをブロックする明示的なロックを注意深く使用しないと、正しく機能しない可能性があります。 これは、反復可能読み取りモードでは不可能なファントム読み取りではありませんか? ドキュメントには、反復可能な読み取りトランザクションのクエリは、トランザクションの開始時のスナップショットが表示されるとありますが、クエリが一貫性のないデータを読み取ることができるのはなぜでしょうか。

3
Express Editionのサイズ制限に達しているかどうかを確認するにはどうすればよいですか?
私は混乱しています。AFAIK SQL Server 2005 Expressには、4GBのデータベース データサイズの制限があります。ただし、次の結果が得られsp_spaceusedます。 DBがサイズ制限に達しているかどうかを確認するにはどうすればよいですか? 未割り当て領域はspace left制限に達するまでですか? 残りのスペースはどれくらいありますか? ないindex_size限度で数えますか?

5
SQL Server RAID 10とRAID 5のインストール
SQL ServerとVMSの設定は初めてです。私の前任者は、SQLインストールが存在するCドライブにはRAID 5を使用し、データベースファイルとデータベースログの両方にRAID 10を使用しました。 それが正しいのか、それとも代わりにRAID 5をSQLデータベースファイルに使用する必要があるのか​​と思いました。 何か助けは?


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