データベース管理者

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

1
MySQL 5.6 DateTime不正なdatetime値: '2013-08-25T17:00:00 + 00:00'とエラーコード1292
私はMySQL 5.6を使用しており、データベースに対して次のSQLステートメントを実行するプログラムがあります。 UPDATE `m_table` SET `s_time` = '2013-08-25T17:00:00+00:00' WHERE id = '123' 残念ながら、次のエラーが表示されます。不正な日時値:行1の列 's_time'の '2013-08-25T17:00:00 + 00:00' s_timeのデータ型はDateTimeです。 ワークベンチを使用してallow_invalid_datesプロパティを設定しようとしました。 誰でもこのエラーを理解して説明してもらえますか?ステートメントを手動でUPDATE m_tableSET s_time= '2013-08-25 17:00:00' WHERE id = '123'に変更すると、ステートメントが機能することを知っています。 残念ながら、SQLステートメントを提供するプログラム(プログラムの作成者によって有効であると言われています)を変更することはできません。また、+ 00:00が何を象徴しているのかも理解できません。 ありがとう
15 mysql  datetime 

6
Oracleは無料でダウンロードできますか?
私はJava開発者であり、現在RDBMSとしてPostgreSQLを使用しています。ただし、Oracleも学びたいです。Oracleの最新バージョン(11gと思う)を無料でダウンロードできますか? このリンク:Oracle Database 11g Release 2 Downloadsを見つけましたが、ダウンロード可能であるようです。ただし、Oracle Serverが独自仕様であることは知っています。それで、それはどのように機能しますか? また、Oracle 11gのダウンロードに加えてPL / SQLもありますか?
15 oracle  plsql 

3
CTE階層の最適化
以下を更新 アカウントの階層を表す一般的なアカウント/親アカウントアーキテクチャのアカウントのテーブルがあります(SQL Server 2012)。CTEを使用してVIEWを作成し、階層をハッシュしました。全体として、意図したとおりに美しく機能します。任意のレベルで階層を照会し、ブランチを簡単に確認できます。 階層の関数として返される必要があるビジネスロジックフィールドが1つあります。各アカウントレコードのフィールドは、ビジネスのサイズを記述します(CustomerCountと呼びます)。レポートする必要があるロジックは、ブランチ全体からCustomerCountをロールアップする必要があります。つまり、アカウントが与えられた場合、そのアカウントのcustomercount値と、階層に沿ったアカウントの下のすべてのブランチのすべての子を合計する必要があります。 acct4.acct3.acct2.acct1のように見えるCTE内に構築された階層フィールドを使用して、フィールドを正常に計算しました。私が直面している問題は、単純に高速化することです。この1つの計算フィールドがないと、クエリは約3秒で実行されます。計算フィールドに追加すると、4分のクエリになります。 これが正しい結果を返す、私が思いつくことができた最高のバージョンです。パフォーマンスをそれほど犠牲にすることなく、このAS A VIEWをどのように再構築できるかについてのアイデアを探しています。 私はこれが遅くなる理由を理解しています(where句で述語を計算する必要があります)が、それを構造化して同じ結果を得る別の方法を考えることはできません。 以下に、テーブルを構築し、CTEを私の環境で動作するように正確に実行するためのサンプルコードを示します。 Use Tempdb go CREATE TABLE dbo.Account ( Acctid varchar(1) NOT NULL , Name varchar(30) NULL , ParentId varchar(1) NULL , CustomerCount int NULL ); INSERT Account SELECT 'A','Best Bet',NULL,21 UNION ALL SELECT 'B','eStore','A',30 UNION ALL SELECT 'C','Big Bens','B',75 UNION …

4
再帰的自己結合
私はcommentsこれを単純化できるテーブルを持っています: comments ======= id user_id text parent_id where parent_idはnull入力可能ですが、親コメントのキーになる場合があります。 さて、select特定のコメントのすべての子孫はどうすればいいですか? コメントはいくつかのレベル下にあるかもしれません...

2
ベンダーは、ビジネスアプリケーションの5分ごとにMSDBジョブを実行したい
両方のDBがSQL Serverインスタンスに存在する2つの異なるアプリケーションを150以上の他のDBと統合しようとするサードパーティベンダーがあり、2つの異なるアプリケーションを5分ごとに「同期」するMSDBジョブを作成します。毎分実行したかった)。 私の最初の予感は、代わりにWindowsのスケジュールされたジョブ、または恐らく恐ろしいトリガー(通常、このような状況に頼る)を使用して、アプリケーション層で何らかの方法でこれを行う必要があるということです。 MSDBジョブをできるだけDBAタスク用に予約しておくと、混乱が減ります。また、このような非常にアクティブなジョブのジョブ履歴を表示すると、MSDBのクエリが遅くなります。バックアップ履歴などのより重要なもの)。しかし、再び、私の好みが間違っている可能性があり、MSDBのアプリケーション層にいくつかのスペースを確保し、袖をまくり、ジョブ履歴の問題を修正する必要があります。バックアップなどの重要なもの(またはハイパーアクティブなジョブエントリをパージ)。 私が抱えているもう1つの問題は、GUIを介してアップグレードを実行するときに、DBに対してのみ「dbo」権限ではなく、このベンダーに「sysadmin」権限を与える必要があり、ミッションクリティカルなインスタンスを爆破しないことを願っていますDBは(統合の欠点の1つ)です。 私は、私たちが素敵をプレイしていないすべてのベンダーを置く別の「単離された」インスタンス上に置くことができますね、しかし、我々は(新しいSQLインスタンスを指すようにアプリケーションを再設定する必要がため息この場合には、残念ながら簡単ではないが)。 ベンダーは、トリガーがどれほど悪いかについての私の懸念を既に押し返しました。それで、私はこれを少し「グーグルで検索」し、空になりました。これは悪い考えであり、私はそれを参照できるという「信頼できる」リンクを誰かが見ましたか?または、彼らのアプローチを採用すべきですか? 助けを求める前にSQLフォーラムに投稿したことがないと思うので、うまくいけば私の問い合わせは適切に組み立てられます。 編集:SQL Server 2008 Enterprise R2 x64 SP1を実行しています(バージョンについて言及するのを忘れていたことを指摘してくれてありがとう!)うーん、できれば、新しいバージョンに移行するときにMSDBアップグレードスクリプトを変更する必要はありません。 御時間ありがとうございます!リッチ

2
実行プランを使用してT-SQLクエリを最適化する方法
過去2日間、試行錯誤と実行計画を使用して最適化しようとして費やしたSQLクエリがありますが、役に立ちません。これを行うことを許してください。しかし、私はここに実行計画全体を掲載します。簡潔にするためと会社のIPを保護するために、クエリおよび実行プランのテーブル名と列名を汎用にするように努力しました。実行計画は、SQL Sentry Plan Explorerで開くことができます。 かなりの量のT-SQLを実行しましたが、実行プランを使用してクエリを最適化することは私にとって新しい分野であり、その方法を本当に理解しようとしました。したがって、誰かがこれを手伝って、この実行計画を解読してクエリで最適化する方法を見つける方法を説明できれば、私は永遠に感謝しています。最適化するクエリはさらに多くあります。この最初のクエリを支援するための踏み台が必要です。 これはクエリです: DECLARE @Param0 DATETIME = '2013-07-29'; DECLARE @Param1 INT = CONVERT(INT, CONVERT(VARCHAR, @Param0, 112)) DECLARE @Param2 VARCHAR(50) = 'ABC'; DECLARE @Param3 VARCHAR(100) = 'DEF'; DECLARE @Param4 VARCHAR(50) = 'XYZ'; DECLARE @Param5 VARCHAR(100) = NULL; DECLARE @Param6 VARCHAR(50) = 'Text3'; SET NOCOUNT ON DECLARE @MyTableVar TABLE …

2
テーブルがクラッシュしたとマークされているため、修復する必要があります
MySQLとNagiosがLinux PC(Centos5.5)をインストールしています NagiosからMysql DBにデータを取得するためのスクリプトを作成しました(テーブルのデータを正確に取得します) データフェッチが正しく機能している(「COUNT」コマンドで確認済み) 私は次のコマンドを実行すると問題が発生します mysql> select * from nagios_servicechecks; エラー1194(HY000):テーブル 'nagios_servicechecks'はクラッシュとしてマークされているため、修復する必要があります このコマンドを除き、他のすべてのコマンドは正常に機能します。
15 mysql  linux  restore 


2
PgBouncerトランザクションレベルプーリングのためにSQLAlchemyで接続プーリングを最適に使用する方法は?
SQLAlchemyを使用して、トランザクションレベルのプーリングを使用して、PgBouncerの背後にあるPostgreSQLデータベースを照会します。 この種のセットアップに使用する最適なパターンは何ですか?を使用してプロセスごとに1つのエンジンを使用するConnectionPool必要がありますか、または要求ごとにエンジンを作成し、NullPoolそれらのそれぞれに使用する必要がありますか?使用する必要がある別のパターンはありますか? どうもありがとう!さらに情報が必要な場合はお知らせください。できるだけ早く更新します。

2
「ORA-01950:表領域「SYSTEM」に権限がありません」:エラーは何ですか?
先にユーザーを作成しました: SQL>create user suhail identified by password SQL>User created. SQL>Grant create session,create table to suhail; SQL>Grant Succeeded. しかし、としてログインしsuhail、作成しようとするtableと、エラーが表示されますORA-01950: no privileges on tablespace 'SYSTEM'。それはどんなエラーですか?なぜ発生するのですか? SQL> connect suhail Enter password: Connected. SQL> create table suhail_table(name char(10)); create table suhail_table(name char(10)) * ERROR at line 1: ORA-01950: no privileges on tablespace 'SYSTEM' Oracle …

7
ソース管理下のストアドプロシージャ、ベストプラクティス
現在、Tortoise SVNを使用して.NET Webアプリケーションのソース管理を行っています。SQL Serverストアドプロシージャをソース管理に組み込むための最良の方法は何ですか?現在、VS 2010を開発環境として使用しており、SQL Server Data Tools(SSDT)を使用して構外のSQL Server 2008 R2データベースに接続しています。 私が過去にやっていることは、プロシージャを.sqlファイルに保存し、このファイルをソース管理下に置くことです。これよりも効率的な方法があるはずだと思いますか?VS2010、SSDT、または実稼働マシンのSQL Serverにインストールできる拡張機能はありますか?

4
autovacuumがオンになっている場合、PostgreSQLデータベースを手動でVACUUMする必要がありますか?
私は大きなPostgreSQLデータベース(その中に百万行を持つテーブルがある)と、開発者は、私がすべきと言うするソフトウェアを使用VACUUMしてANALYZE定期的に。ただし、PostgreSQLデータベースのデフォルトはautovacuumオンになっています。 まったく掃除機をかける/分析する必要がありますか?利点は何ですか?自動真空と手動真空の違いは何ですか たとえば、Pgadmin3では、これがあります。

6
2008より遅いSQL Server 2012
古いサーバー(Windows 2008 / SQL Server 2008/16 GB RAM / 2 x 2.5 GHzクアッドコア/ SASディスク)から大規模なWebサイトとデータベースを、より優れた新しいサーバー(Windows 2008 R2 / SQL Server 2012 SP1 / 64 GB RAM / 2 x 2.1 GHz 16コアプロセッサ/ SSDディスク)。 古いサーバーのデータベースファイルをデタッチし、新しいサーバーにコピーして添付しました。すべてがうまくいきました。 その後、互換性レベルを110に変更し、統計を更新し、インデックスを再構築しました。 残念ながら、新しいSQL 2012サーバーでは、ほとんどのSQLクエリが古いSQL 2008サーバーよりもはるかに遅い(2-3-4倍遅い)ことに気付きました。 たとえば、約70万件のレコードがあるテーブルでは、古いサーバーではインデックスのクエリに約100ミリ秒かかりました。新しいサーバーでは、同じクエリに約350ミリ秒かかります。 すべてのクエリで同じことが起こります。 ここで助けていただければ幸いです。チェック/検証する内容を教えてください。新しいSQL Serverを搭載した優れたサーバーではパフォーマンスが低下すると信じるのは非常に難しいためです。 詳細: メモリは最大に設定されています。 私はこのテーブルとインデックスを持っています: CREATE TABLE [dbo].[Answer_Details_23]( [ID] [int] IDENTITY(1,1) …

3
同じサーバー上の2つのインスタンス間で共有されるものは何ですか?
単一のWindowsサーバーにSQL Serverの複数のインスタンスをインストールします。サーバーはベアメタルWindows 2008 R2であるため、VMは使用できません。 セキュリティのために、管理、Windowsサービス、アカウントなど、2つのインスタンスが何も共有しないようにする必要があります。そのため、質問は次のとおりです。 WindowsサーバーにSQL Serverの複数の「インスタンス」をインストールする場合、何が共有されますか?

3
OFFSET…FETCHと古いスタイルのROW_NUMBERスキームとの間に実行計画の違いがあるのはなぜですか?
OFFSET ... FETCHSQL Server 2012で導入された新しいモデルは、シンプルで高速なページングを提供します。2つの形式が意味的に同一であり、非常に一般的であることを考慮すると、なぜまったく違いがあるのですか? オプティマイザーが両方を認識し、それらを(簡単に)最大限に最適化すると仮定します。 OFFSET ... FETCHこれは、コストの見積もりによると2倍速い非常に単純なケースです。 SELECT * INTO #objects FROM sys.objects SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY object_id) r FROM #objects ) x WHERE r >= 30 AND r < (30 + 10) ORDER BY object_id SELECT * FROM #objects ORDER BY …

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