データベース管理者

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

2
計算列インデックスは使用されません
2つの列が等しいかどうかに基づいて高速ルックアップが必要です。インデックス付きの計算列を使用しようとしましたが、SQL Serverはそれを使用していないようです。静的に設定されたインデックス付きのビット列を使用するだけで、予想されるインデックスシークが得られます。 このような質問は他にもありますが、インデックスが使用されない理由に焦点を当てたものはありません。 テスト表: CREATE TABLE dbo.Diffs ( Id int NOT NULL IDENTITY (1, 1), DataA int NULL, DataB int NULL, DiffPersisted AS isnull(convert(bit, case when [DataA] is null and [DataB] is not null then 1 when [DataA] <> [DataB] then 1 else 0 end), 0) PERSISTED , DiffComp AS …

1
Sequel Proでリモートサーバーからデータベース全体をダンプする方法
SequelPro Mac OSX上のリモートホストへのデータベース接続があります。データベース全体をダンプするにはどうすればよいですか。mysqldumpコマンドの動作のようなダンプが必要です。 $ mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql] テーブルダンプオプションが見つかりましたが、完全なデータベースダンプが必要です。
14 mysql  mysqldump 

1
複数のCOUNTがCASEの1つのSUMよりも速いのはなぜですか?
次の2つのアプローチのどちらが速いかを知りたかったのです。 1)3つCOUNT: SELECT Approved = (SELECT COUNT(*) FROM dbo.Claims d WHERE d.Status = 'Approved'), Valid = (SELECT COUNT(*) FROM dbo.Claims d WHERE d.Status = 'Valid'), Reject = (SELECT COUNT(*) FROM dbo.Claims d WHERE d.Status = 'Reject') 2)SUMとFROM-clause: SELECT Approved = SUM(CASE WHEN Status = 'Approved' THEN 1 ELSE 0 END), …

5
プロパティサイズはデータベースでは使用できません
最近、データベースのバックアップ元と同じインスタンス(SQL Server 2008 R2 Enterprise)にデータベースを復元しましたが、データベースプロパティにアクセスできないことがわかりました。 私は次のことをしました: を使用してデータベース所有者が正しく設定されていることを確認しましたsp_helpdb。 データベース所有者をに変更しましたsa。修正ではありません。 データベースの所有者をsysadminユーザーに戻しました。修正ではありません。 DBCC updateusage影響を受けるデータベースに対して発行されました。修正ではありません。 DBCC CheckDB復元されたコピーを別のインスタンスに実行します。破損は見つかりませんでした。(同じバックアップファイルから)復元されたコピーは、データベースプロパティウィンドウにアクセスするときにエラーをスローしませんでした。 誰でも助けることができますか? プロパティを表示しようとすると表示されるエラーメッセージは次のとおりです。 要求されたダイアログを表示できません。(SqlMgmt) データベース '[DBNAME]'のプロパティサイズは使用できません。 このプロパティはこのオブジェクトには存在しないか、アクセス権が不十分なために取得できない可能性があります。(Microsoft.SqlServer.Smo) 私はsysadminこのインスタンスです。 更新:提案されたように、新しいユーザーを作成し、sysadminにし、データベース所有者をそれに変更しました。残念ながら修正ではありません。プロファイラトレースが有用なものを生成するかどうかを確認します。 更新:アーロン-元のデータベースの名前が変更され、オフラインになりましたが、そのインスタンスに残っています。その後、そのデータベースのバックアップは元の名前を使用して復元されました。新しいデータベースファイルのファイル名は、元のmdf / ldfと同じフォルダーにあるため、元のファイルとは異なります。復元されたデータベースは現在、通常どおり重要なアプリを駆動しています。

2
条件付き外部キーの関係
現在、2つのエンティティ間に外部キーがあり、その関係をテーブルの1つのentityTypeを条件とするようにします。これがテーブルの階層です。これは、子から親へのFK参照を介して行われます Store / \ Employees \ TransactionalStores / | \ Kiosks | BrickMortars Onlines 現在、従業員から店舗へのFK関係があります ALTER TABLE Employees ADD CONSTRAINT Employee_Store FOREIGN KEY (TransStoreId) REFERENCES TransactionalStores(StoreId) 条件を追加したい: WHERE TransactionalStores.storeType != 'ONLINE_TYPE' これは可能ですか、またはTransactionalStoresを2つの新しいsubType(PhysicalStoresおよびVirtualStoresなど)にサブクラス化する必要がありますか

2
SQL Server dbを完全バックアップから復元できない、ログ処理が失敗、データベースが「復元中」状態
PCのローカルSQL Server Developer Edition 12.0.2000.8に開発目的でデータベースを設定しようとしています。データベース全体のバックアップと、ネットワーク経由で送られてきたトランザクションログ専用のバックアップファイルが用意されています。 完全バックアップから復元しようとすると、しばらくして(おそらく1時間以内に、データベースのサイズが〜270 GBになります)、エラーが発生します: System.Data.SqlClient.SqlError:データベース 'database name'のログの処理中にエラーが発生しました。可能であれば、バックアップから復元します。バックアップが利用できない場合、ログを再構築する必要があるかもしれません。(Microsoft.SqlServer.SmoExtended) この後、データベースは「復元中」状態になります。 私は次のようなものを実行したかった(この質問からそれを得た) ALTER DATABASE recovery_test_2 SET EMERGENCY; ALTER DATABASE recovery_test_2 SET SINGLE_USER; DBCC CHECKDB (recovery_test_2, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS; それに対して、データベースが「復元中..」状態にあるため、当然のことながらできません。復元プロセスを再起動しても同じエラーメッセージが表示され、ドロップと復元は再び役に立ちませんでした。 データベースを起動して動作させるにはどうすればよいですか?トランザクションの一貫性は私には関係ありません。 SSMS自動生成復元スクリプト: USE [master] RESTORE DATABASE [database_name] FROM DISK = N'D:\database_name.bak' WITH FILE = 1, MOVE N'database_name' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name.mdf', MOVE …

1
エラー:ファイル ''を削除できませんでした(エラー2:そのようなファイルまたはディレクトリはありません)
pgAdmin IIIを使用してデータベースを復元するたびに、次のpgAdmin IIIエラーが表示されます。 エラー:ファイル ''を削除できませんでした(エラー2:そのようなファイルまたはディレクトリはありません) pgadminログを参照してください。 私の構成: x86_64-unknown-linux-gnu上のPostgreSQL 9.4.4、gcc(Ubuntu 4.8.2-19ubuntu1)4.8.2、64ビットでコンパイル Linux 3.19.0-26-generic#28〜14.04.1-Ubuntu SMP Wed Aug 12 14:09:17 UTC 2015 x86_64 x86_64 x86_64 GNU / Linux

4
SQL Server Developer Edition 2012または2014-ダウンロード
Developer Editionは無料であり、ダウンロードするために登録は必要ないと聞いています(かなり確信しています)。しかし、今日それを探し始めたとき、私はそれをどこから入手するかを見つけることができませんでした。私の理解は間違っているか正しいですか?申し訳ありませんが、ここで同様の質問は見つかりませんでした。何か案は?
14 sql-server 

1
SQL Serverによる毎日の計画の再作成
実稼働環境でこの問題が発生しています。 Microsoft SQL Server 2008 R2(SP1)-10.50.2500.0(X64)-Windows NT 6.1(ビルド7601:Service Pack 1)上のEnterprise Edition(64ビット)。 SQL Serverは、すべての(ほぼ100%)古い実行計画を削除し、毎日一晩中(午後11:00から8:00に)再作成しています。これは、「自動更新統計」が無効状態のときにも発生していました。過去2〜3週間、「自動更新統計」をオンにしました。しかし、それはまだ起こっています。 この計画の再生成をトリガーするものは実際にはわかりませんが、手動でそれを行わないことは確かです。 計画が再生成されるタイミングと実際に一致するのは、DBメンテナンスジョブのみです。毎日のインデックスの再編成(断片化が5〜30%の場合)と毎日のインデックスの再構築(断片化が30%を超える場合) )仕事。通常、この毎日のメンテナンスジョブは再編成のみを行います(インデックスの断片化は毎日30%を超えないため)。 影響: これらの新しく作成されたプランにより、UDF呼び出し/クエリ呼び出し(UI / Webページから呼び出される)がかなり長くなり(1秒未満ではなく数分)、セッションが積み上げられてCPUが90%近くになります。 問題は、それらのスタックしたセッションが強制的に削除された瞬間(DB側)、1)対応するすべての実行プランが手動でクリアされたとき(クエリの場合)、2)UDFが変更されたとき(関数の場合)に消えます。その瞬間からSQLサーバーによって作成された新しい計画は、翌朝同じ問題が発生するまで1日を通して完璧に機能します。また、この動作は100%一貫しているわけではなく、毎朝実際に表示されるわけではありません。しかし、4〜5日間連続して表示されている期間がありました。 この問題は、ビジネスの朝に発生します。UI/ Webページがより集中的にアクセスされる場合です。 誰がこれを引き起こしているのか、この問題を解決する方法の手がかりを持っていますか?どんな助けでも大歓迎です。

4
Azure SQL Databaseのアプリケーションでは「ユーザーのログインに失敗しました」が、SSMSでは正常に機能する
Azure SQL Database V12に含まれるデータベースユーザー機能を試してみたかったのですが、認証に問題があり、奇妙に思えます。 というデータベースを作成しましたClassifier。ワークステーションのSSMSからAzure dbサーバーに接続できるように、ファイアウォールルールにIPを追加しました。管理のためにSSMSを介して接続できるようになったら、次のようにパスワードを持つユーザーをデータベースに追加してみました。 CREATE USER classifier WITH PASSWORD='thepassword' また、このユーザーをデータライターおよびリーダーの役割に追加しました。 exec sp_addrolemember 'db_datawriter', 'classifier' exec sp_addrolemember 'db_datareader', 'classifier' この後、SSMSからのこれらの資格情報を使用してデータベースに接続できます。 しかし、これが問題の原因です。いくつかの異なる接続文字列の呪文を試してみましたが、作業中のWebアプリで接続できないようです。Azure環境では機能しなかったため、Azureデータベースへの接続文字列を使用してlocalhostで実行していますが、接続できません。現在使用している接続文字列は次のとおりです。 <add name="Classifier" connectionString="Data Source=xxxxxxx.database.secure.windows.net;Initial Catalog=Classifier;User ID=classifier;Password=xxxxxxxxxxxxx;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" providerName="System.Data.SqlClient"/> ユーザーのパスワードを(SSMS経由で)リセットしてから、接続文字列を更新しようとしました。また、この接続文字列からSSMSの接続ダイアログにパスワードをコピーしてパスワードを再確認し、そこに何らかのタイプミスがないことを確認しました。 Azure dbサーバーで監査を有効にし、失敗の理由に関する詳細を取得することを期待していますが、取得できるのはこれだけです: そして、これは私が立ち往生しているところです。ドキュメントやブログで見つけることができたもののほとんどは、SQL Serverログを調べて、エラーの性質をより厳密に示す実際のエラー状態を確認することを示していますが、 Azureを扱っているので、それを行う方法はありません(私の知る限り)。 SSMS(およびLinqPadおよびVisual Studio Server Explorer)が成功した場合、アプリケーションが失敗する原因は何ですか?


1
Postgres:マテリアライズドビューが使用するディスク容量を確認しますか?
Postgresでインデックスとテーブルのサイズを確認する方法を知っています(バージョン9.4を使用しています)。 SELECT relname AS objectname, relkind AS objecttype, reltuples AS "#entries", pg_size_pretty(relpages::bigint*8*1024) AS size FROM pg_class WHERE relpages >= 8 ORDER BY relpages DESC; しかし、これには具体化されたビューは表示されません。使用しているディスク容量を確認するにはどうすればよいですか?

2
複数の日付範囲を使用してデータをカウントする
おそらくこれは以前に尋ねられたことがありますが、私にはわかりません。phone_clicksテーブルがあります(sql fiddle http://sqlfiddle.com/#!15/855e0/1) CREATE TABLE phone_clicks ( id integer NOT NULL, date date NOT NULL, industry_id integer NOT NULL, clicks integer DEFAULT 0 NOT NULL ); insert into phone_clicks(id, date, industry_id, clicks) values (1, '2015-03-16', 1, 15), (2, '2015-03-16', 2, 7), (3, '2015-03-16', 3, 0), (4, '2015-03-17', 1, 12), (5, …
14 postgresql 

1
通知システムについて
私はSEに通知システムを構築する方法を検討して、他の場所と私はここに受け入れ答えである液に描か発見されている:/programming/9735578/building-a-notification-system た用途この構造: ╔═════════════╗ ╔═══════════════════╗ ╔════════════════════╗ ║notification ║ ║notification_object║ ║notification_change ║ ╟─────────────╢ ╟───────────────────╢ ╟────────────────────╢ ║ID ║—1:n—→║ID ║—1:n—→║ID ║ ║userID ║ ║notificationID ║ ║notificationObjectID║ ╚═════════════╝ ║object ║ ║verb ║ ╚═══════════════════╝ ║actor ║ ╚════════════════════╝ 通知は、何か(オブジェクト=イベント、友情..)が誰か(俳優)によって変更(動詞=追加、要求)され、ユーザー(対象)に報告されることに関するものです。これが正規化されたデータ構造です(MongoDBを使用しましたが)。特定のユーザーに変更を通知する必要があります。つまり、ユーザーごとの通知です。つまり、100人のユーザーが関与している場合は、100の通知を生成します。 最初はこのアプローチを理解していると思っていましたが、それを実装する準備を始めたとき、私は明らかにそれを特によく理解していないことに気付きました。回答に関する最後のいくつかのコメントは、ソリューションの理解に苦労した他のユーザーからの質問です。 私がいないことを確認これは私が次のように終わるだろうモデルがある場合だけど、それが持っているupvotesの数を考えると、私はそれは私がする恩恵を受けるだろうと確信して理解し、それを、私は確かのようにもっと勉強したいです。これがこの解決策を把握するのに苦労した他の人にも役立つことを願っています(偶然、私はこの質問に向けてその答えにコメントを残すのに十分なインターネットポイントを持っていません、他の誰もしてください!) ご質問 正しく理解できれば、notificationObjectIDはnotification_objectテーブルを指す外部キーであり、notificationIDは通知テーブルを指す外部キーです。オブジェクトは、通知の対象となるデータベースエントリ(特定のイベントや投稿など)のIDを参照する外部キーであるように見えますが、そのIDが属するテーブルを示す別のフィールドが必要ではないでしょうか? 著者が書いた notification_object.objectは、文字列「friendship」のような変更タイプを識別します。私が話す追加データを含む変更されたオブジェクトへの実際の参照は、notification_change.notificationObjectIDにあります。 私には意味がないようです。オブジェクトは文字列(enum?)で、notificationObjectIDは通知の対象となるオブジェクトを参照する外部キーですか?それでは、真ん中のテーブルと正しいテーブルはどうやってつながっているのでしょうか? 中央のテーブルは、通知の対象となるオブジェクト(またはオブジェクトのタイプ)、たとえばイベントや投稿を指定しているようです。次に、同じオブジェクトタイプを指すnotification_changeのエントリを多数持つことができます。これにより、通知(「25人のユーザーがXの壁に投稿されました」など)をバンドルできます。 しかし、左テーブルと中央テーブルの間に1:nの関係があるのはなぜですか?「25人のユーザーがSamのウォールに投稿されました」と「Maryが彼女の「Friday Picnic」イベントを更新した同じ通知IDを提供しますか?同じユーザーのすべての通知に同じ通知IDがある場合、なぜ左? パフォーマンスに関する質問-ジョンがメアリーのピクニックイベントにコメントを投稿するとします。notification_changeエントリを作成する前に、Mary's Picnicのnotification_objectが既に存在するかどうかを確認するためにルックアップを行う必要があるようです。これはパフォーマンスに悪影響を及ぼしますか、それとも問題ではありませんか?前の段落からの質問を続けると、どのように我々は知っているだろう通知指すようにエントリnotification_objectをしますか?

1
C#コードおよびストアドプロシージャでトランザクションを処理する必要がありますか
データベースストアプロセスとC#の両方でトランザクション処理が本当に必要ですか? C#: Using(transaction with transaction scope) { Execute stored proc; Transaction. Complete; } SQLストアドプロシージャ: Create process As Begin try Begin transaction Commit End try Begin catch Rollback End catch

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