データベース管理者

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

3
AlwaysOn可用性グループlog_send_rate
仮想マシンでWindows 2012およびSQL Server 2012を実行しているすべてのAlwaysOnセットアップとベアメタルで、log_send_rate sys.dm_hadr_database_replica_statesが一貫して誤った値を返していることがわかりました 。 例(同期モードの場合) sys.dm_hadr_database_replica_states.log_send_rate(ave = 36,571(kb / sはbolで表示)) Perfmon-SQLServer:可用性レプリカ-レプリカに送信されたバイト数/秒(最大= 486,000.000、平均= 259,000.000) Perfmon-SQLServer:Databases-ログフラッシュされたバイト数/秒(最大= 653,044.000、平均= 341,000.000) これに関する投稿を見たことがありませんが、正しく機能していないようです。正しいlog_send_rate値は、AlwaysOnの監視に役立ちます。 他の誰かがこれを経験しましたか?

1
UNPIVOTが互換性レベル80 DBで機能するのはなぜですか?
互換性レベル80で実行されているSQL Server 2008 SP3データベースでUNPIVOTを使用してデータをプルしようとしています。これは、UNPIVOTが機能しないことを意味しますが、私の場合、特定の状況で機能します... 作品: 次の形式の独立したSELECTクエリ: SELECT...FROM...UNPIVOT...WHERE...GROUP BY 動作しません: LEFT JOIN ()同じサーバー内の異なるデータベース上の他のテーブル上の同じクエリ。すべて互換性レベル80。 通常のエラーメッセージが表示されます。 Msg 325, Level 15, State 1, Line 165 Incorrect syntax near 'UNPIVOT'. You may need to set the compatibility level of the current database to a higher value to enable this feature. See help for the SET …

1
Oracle11.gデータベースでのOracle12Cクライアントの使用
私はOracle12cクライアントを使用してリモートサーバーのOracle11gデータベースに約1か月間接続していますが、今週、エラーが発生し始めるまで問題はありませんでした。 The Network Adapter could not establish the connection Provider Code 17002 最初にOracle Sql Developerを使用してデータベースのテーブルを設計し、その1週間後にVisual Studio 2013でアプリの開発を開始しました。そこではOracle.DataBase.Client、oracleが提供するVisual Studio Integrated Toolsの一部としてネイティブアダプターとライブラリを使用しました。彼らのデータベースで作業する。 クライアントが12cでデータベースが11gであることが原因でエラーが発生したのか、この質問が問題ではなく、別のことが起こっているのかを知りたいです。

3
MySQLの同じ名前の2つのテーブル
今日、一時テーブルを削除したときに、この奇妙な問題が発生しました。確認のために一時テーブルを削除し、テーブルを記述しました。しかし、テーブルは削除されませんでした。いくつか検索したところ、次のことがわかりました。 MySQLでは、永続テーブルと同じ名前の一時テーブルを作成できます。そのため、一時テーブルは削除され、永続テーブルは削除されませんでした。作業しているテーブルが本当に混乱しました。 MySQLバージョン:5.1.36-enterprise-gpl-pro-log これは私がテストしたものです: mysql> create table test(id int); Query OK, 0 rows affected (0.00 sec) mysql> desc test; | Field | Type | Null | Key | Default | Extra | -------------------------------------------------- id int(11) YES NULL mysql> create temporary table test(id int); Query OK, 0 rows affected (0.00 sec) …
8 mysql  table 

2
シンプルリカバリモードを設定し、ユーザーが作成したすべてのデータベースのログファイルを圧縮する
正しい方向に向けていただければ幸いです。私はT-SQLを頻繁に使用するわけではありませんが、グーグル操作をして、以下のスクリプトを見つけました。スクリプトを少し修正しました。 スクリプトで次のことを行います。 システムDBを除くすべてのデータベースを選択します。 リカバリをシンプルに設定します。 システムデータベースを除くすべてのdb(.ldf)のログファイルを圧縮するには スクリプト: USE MASTER declare @isql varchar(2000), @dbname varchar(64) declare c1 cursor for select name from master..sysdatabases where name not in ('master','model','msdb','tempdb','ReportServer','ReportServerTempDB') open c1 fetch next from c1 into @dbname While @@fetch_status <> -1 begin select @isql = 'ALTER DATABASE @dbname SET RECOVERY SIMPLE' select @isql …

2
COALESCE(…)でサブクエリの選択を最適化する
アプリケーション内から使用する大きなビューがあります。私はパフォーマンスの問題を絞り込んだと思いますが、それを修正する方法がわかりません。ビューの簡略版は次のようになります。 SELECT ISNULL(SEId + '-' + PEId, '0-0') AS Id, *, DATEADD(minute, Duration, EventTime) AS EventEndTime FROM ( SELECT se.SEId, pe.PEId, COALESCE(pe.StaffName, se.StaffName) AS StaffName, -- << Problem! COALESCE(pe.EventTime, se.EventTime) AS EventTime, COALESCE(pe.EventType, se.EventType) AS EventType, COALESCE(pe.Duration, se.Duration) AS Duration, COALESCE(pe.Data, se.Data) AS Data, COALESCE(pe.Field, se.Field) AS Field, pe.ThisThing, se.OtherThing …

2
計算フィールドにインデックスを作成する:文字列またはバイナリデータは切り捨てられます
Foo次のフィールドを持つテーブルがあります。 ID bigint not null identity(1,1), SerializedValue nvarchar(max), LongValue as TRY_CAST(SerializedValue as bigint) 次に、LongValueにインデックスを作成して、数値を表すシリアル化された値を簡単に検索できるようにします。 create nonclustered index IX_Foo on Foo(LongValue); 私に次のエラーを吐き出します: 文字列型やバイナリは省略されます。 はい、SerializedValueに既存のデータがあります。しかし、計算されたフィールドにインデックスを作成することで、何が切り捨てられるのでしょうか。

3
同じ制約とインデックスで新しいテーブルを作成するにはどうすればよいですか?
主キー制約とそのテーブルに非クラスター化インデックスを含む新しいテーブルを作成しています。 キーとインデックスだけでなく、同じ構造と値を持つ別のテーブルを作成したいのですが。 create table Dummy (id integer ,name varchar(20),salary integer Constraint PK_Con_id primary key(id)) insert into Dummy values(11,'AAA',1000); insert into Dummy values(12,'BBB',2000); insert into Dummy values(13,'CCC',3000); insert into Dummy values(14,'DDD',4000); select * from Dummy; create nonclustered index IX_Name on Dummy(Name) 現在、Dmyテーブルを作成していますがDmy、SQL Server 2008 R2のキーと制約がテーブルに反映されません。 SELECT * INTO Dmy FROM Dummy

1
PostgreSQLのJSON []配列から既知の要素を削除する方法は?
PostgreSQLでのJSONデータ型の使用に関する問題に直面しています。非正規化されたJavaモデルをDBに格納しようとしています。モデルは複雑なオブジェクトのリストを備えています。そのため、これらをネイティブのPostgreSQL配列でJSONとしてモデル化することにしました。 これは私のテーブル作成ステートメントの抜粋です: CREATE TABLE test.persons ( id UUID, firstName TEXT, lastName TEXT, communicationData JSON[], CONSTRAINT pk_person PRIMARY KEY (id) ); ご覧のとおり、それはJSONで通信データオブジェクトのリストを備えた人物です。そのようなオブジェクトの1つは次のようになります。 {"value" : "03334/254147", "typeId" : "ea4e7d7e-7b87-4628-ba50-6a5f6e63dbf6"} PostgreSQLのarray_appendを使用して、このようなJSONオブジェクトを配列に簡単に追加できます。ただし、既知の値をアレイから削除できません。次のSQLステートメントについて考えてみます。 UPDATE test.persons SET communicationData = array_remove( communicationData, '{"value" : "03334/254147", "typeId" : "ea4e7d7e-7b87-4628-ba50-6a5f6e63dbf6"}'::JSON ) WHERE id = 'f671eb6a-d603-11e3-bf6f-07ba007d953d'; これはで失敗しERROR: could not identify …

4
数百万行の分類されたデータやSQLマジックを保存しますか?
私のDBAの経験は、単純なストレージ+ CMSスタイルのデータの取得よりもはるかに進んでいないため、これはばかげた質問かもしれませんが、わかりません! 特定のグループサイズと特定の期間内の特定の日数の休日価格を検索または計算する必要があるという問題があります。例えば: 1月のいつでも2人で4泊できるホテルの部屋はいくらですか。 たとえば、5000のホテルの料金と空き状況のデータは次のように保存されています。 Hotel ID | Date | Spaces | Price PP ----------------------------------- 123 | Jan1 | 5 | 100 123 | Jan2 | 7 | 100 123 | Jan3 | 5 | 100 123 | Jan4 | 3 | 100 123 | Jan5 | 5 | 100 …


5
SQL Server 2012常時バックアップ、フルvsコピーのみ
コピーのみのバックアップと完全バックアップは、トランザクションログの番号付けと必要に応じて復元するため、迅速な説明が必要です。 SQL Server 2012のセットアップで、複数のデータベースに対して常にオンになっています。可用性グループは、レプリカの優先バックアップでセットアップされます。 レプリカでは、コピーのみとトランザクションログのバックアップのみが可能です。これは、トランザクションログの復元が必要な場合、プライマリで完全バックアップを実行する必要があることを意味しますか? ありがとうございました

2
MySQLがシリアル同期I / Oを行うのはなぜですか?
何度も実行するのに長い時間がかかるMyISAMテーブルで特に厄介なクエリを見ると、MySQLはかなり奇妙なI / Oパターンを公開しているように見えることに気づきました。 I / Oの量(たとえば、テーブルスキャンの場合、または結果としてキャッシュが空にecho 3 > /proc/sys/vm/drop_cachesなるため、最初にインデックスをディスクからロードする必要がある場合)、基礎となるブロックデバイスのキューサイズは値1に近く、パフォーマンスは非常に低いわずか4〜5 MB /秒: root@mysql-test:~# iostat -xdm 5 /dev/sda Linux 3.2.0-40-generic (mysql-test) 04/30/2014 _x86_64_ (4 CPU) Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.14 24.82 18.26 88.79 0.75 4.61 102.56 2.83 26.39 19.29 27.85 2.46 …

1
三元関係:単一のテーブルを持つことと複数のテーブルを持つことの違いは何ですか?
次の3項関係を考えます。 すべてのエンティティに2つの属性(PKと名前)しかないと仮定します。 ここに私が導き出した表があります(5つの表): Sector ------------------------- ID_Sector SectorName ------------------------- Product ------------------------- ID_Product ProductName ------------------------- Company -------------------------------------- ID_Company ID_Sector CompanyName -------------------------------------- Relationship 1 (R1) ------------------------- ID_Sector ID_Product ------------------------- Relationship 2 (R2) ------------------------- ID_Company ID_Product ------------------------- 質問: その三者関係の良い解決策ですか?次の単一のテーブルの代わりに2つのテーブル(R1とR2)を持つことの違いは何ですか? Ternary table ------------------------------------- ID_Sector ID_Company ID_Product ------------------------------------- 私には、各リレーションシップ(R1とR2)に2つの別々のテーブルがある方が、1つのテーブルを持つよりも良い解決策のように見えますが、それが実際に当てはまるのか、それが良い方法なのかはわかりません。

9
データベースは読み取り専用であるか、読み取り専用ファイルがあるため、アップグレードできません。データベースまたはファイルを書き込み可能にして、リカバリを再実行します
データベースファイルを受け取りました。それをロードする手順は、SQL Server 2005をインストールしてから、SQL Server Management Studioを使用して添付することです。 すべてをインストールした後、MDFファイルを添付しようとしましたが、次のように表示されます。 ファイル「D:{folderName} {filename} .LDF」のディレクトリ検索は、オペレーティングシステムエラー21(エラーが見つかりません)で失敗しました LDFファイルはデータベースに付属していなかったため、おそらく自動的に生成されるはずです。 さて、Dドライブは私のCDドライブがある場所なので、そこには何も見つかりません。そこに何かを作ろうとする運もありません。 特定のパスでログファイルを検索しようとするのはなぜですか?データベースファイルがどこにあるのですか? このデータベースを接続するにはどうすればよいですか? アタッチするデータベースを選択すると、「データベースの詳細」の下に3つのエントリが表示されることに気付きました。MDF、NDF、およびLDF。LDFの「現在のファイルパス」は上記のDドライブパスを指しているため、削除しました。 今回、「OK」をクリックすると、別のエラーメッセージが表示されます。 データベースは読み取り専用であるか、読み取り専用ファイルがあるため、アップグレードできません。 データベースまたはファイルを書き込み可能にして、リカバリを再実行します。 ファイルのアクティブ化に失敗しました。物理名D:{folder} {file} .LDFが正しくない可能性があります。 新しいログファイル「...」が作成されました。(Microsoft SQL Server、エラー:3415) そのため、データベースファイルと同じフォルダに新しいログファイルが作成されます。これはすばらしいことですが、セキュリティ上の問題があるようです。 追加情報: この手順では、sysadminアカウントのように見えるログイン名「sa」を使用する必要があります。そのログインを使用してSQL Serverインスタンスに接続しています。 ファイルのプロパティが読み取り専用でないことを確認しました。ディレクトリも読み取り専用ではありません。すべてのACLが許可されます。 データベースをアタッチできません。アタッチしようとすると、「データベースのアタッチに失敗しました」というエラーメッセージがスローされます。 SSMSを閉じて、管理者として再び開くと、違いはありませんでした。 select SERVERPROPERTY('ProductVersion')9.00.4035.00を返します。「IsSql2000 = 1」と書かれている「dbdata.ini」と呼ばれるデータベースに付属する別のファイルがあるため、おそらくSQL Server 2000にロードすることを意図しています。2000で動作させることができるかどうか確認します。

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