データベース管理者

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

1
ビューに新しい列を作成し、データ型を割り当てます
これが私のクエリです: CREATE VIEW VIEW2 AS SELECT [Column1], (NULL) AS column2 VARCHAR(10) FROM VIEW1; 3行目にエラーが表示されます。 Column2のデータ型を指定せずにこのようなクエリを残すと、クエリは機能しますが、デフォルトのデータ型はintになりますが、VARCHARが必要です。 CREATE VIEW VIEW2 AS SELECT [Column1], (NULL) AS column2 FROM VIEW1; 手伝ってくれませんか?ありがとうございました! 注:VIEW1にはColumn1のみが含まれています。Column2はVIEW1にはなく、NULL値を持つ生成された列です。

1
テーブルはどのくらいのメモリを使用していますか?
SQL Server(2005以降)でテーブルが使用しているメモリの量を調べる方法はありますか? たとえば、3000万レコードのテーブルがあるとします。インデックス、データ、テキスト/イメージページなど、このテーブルに属するページが現在バッファキャッシュにあるページ数を教えてください。 私はこのクエリをPinal Daveが見つけましたが、このクエリはインデックスによって割り当てられたページのみを返すようです(クラスター化されているかどうかにかかわらず)。

2
mysqldumpから作成されたデータをロードするときに警告を表示するにはどうすればよいですか?
大規模な.sqlファイルに、大きな値を挿入する...値...ステートメントがあります。これらのステートメントの多くは、実行中に警告を生成しています。mysqlに警告を出力させるにはどうすればよいですか? control-Cを押すと、インポートが停止し、OSのコマンドラインに戻ります。 SQLの実行からの出力例は次のとおりです。 Query OK, 9827 rows affected, 5403 warnings (0.20 sec) Records: 9827 Duplicates: 0 Warnings: 5403 Query OK, 9859 rows affected, 5247 warnings (0.20 sec) Records: 9859 Duplicates: 0 Warnings: 5247

2
統計が最後に実行された日時を確認するにはどうすればよいですか?
最近、私たちのDBAチームが統計が最近実行されなかったことが原因であるとインデックスについて多くの問題を抱えています。これにより、SQL Management Studioを介して統計情報が最近更新されたかどうかを確認するにはどうすればよいですか。 この質問がこれをうまく説明していない場合はお詫び申し上げます。私はこれまで統計について紹介されてきただけで、以前はパフォーマンス関連の問題が発生するたびにインデックスを調べていました。 編集: 以下を使用していますが、構文エラーが表示されます。 use *databasename* exec sp_autostats *schema.tablename* 私が受け取っているエラーは: Msg 102, Level 15, State 1, Line 2 Incorrect syntax near '.'. どうしてこれなの?

1
実行計画の計算になぜそんなに時間がかかるのですか?
お客様の1人が新しいサーバーにアップグレードしました。 特定のストアドプロシージャを初めて実行すると、実行に3分以上かかります。後続の実行は1秒未満です。 これにより、最初の3分間は主に実行計画の計算に費やされると思います。その後の実行では、キャッシュされたプランを使用して即座に実行されます。 テストデータベースでは、同じ手順の計画を計算するのに約5秒かかります。 プラン自体にはひどいものは何もありません。ただし、プランはクエリの実行にかかる時間を示しており、計算自体は行わないため、関連性があるとは思いません。 サーバーは24ギガバイトのメモリを備えた16コアです。CPUやメモリの負荷が大きくなることはありません。 特定のデータベースでのみこのような遅い計算を引き起こしているのは何ですか? 問題の原因を特定するためにどのような手順を実行できますか? 編集する したがって、サーバーにアクセスして、SET SHOWPLAN_XML ONを指定してクエリを実行できました。 クエリのCompileTimeがクエリ実行時間の99%を占めていることを確認できます。StatementOptmEarlyAbortReasonがある「タイムアウト」理由はMemoryLimitExceededされ、そのデータベースのコピーを持つ我々のテストデータベースに、。

1
LDFファイルからデータを回復するにはどうすればよいですか?
SQL 2005 Express Editionを使用しています。一部の削除されたレコードを復元するために、LDFファイルからデータを読み取ります。 ApexSQLの試用版を使用してみました。サードパーティのソフトウェアを使用する代わりに、ログファイルを自分で読み取る方法を見つけようとしています。 LDFファイルからデータを読み取って回復するにはどうすればよいですか?


1
Postgresクライアントのコピー(\ copy)コマンドは一時テーブルにアクセスできませんか?
最終的にpsql -fを使用して実行するデータをエクスポートするためのSQLコマンドのリストを生成しています。クエリはすべて同じデータのサブセットを取得するので、資格を考慮に入れて、適格なユーザーIDのリストを一時テーブルにそのように配置すると思いました create temporary table tmp_export_users as (select id from users where ...) それから私のような\ copyコマンドでそれをもう一度参照してください \copy (select ... from table where user_id in (select id from tmp_export_users)) TO 'filename.csv' WITH CSV HEADER それらはすべて同じファイルにあり、1行に1つずつ実行します。-fコピーコマンドが一時テーブルを表示できないというエラーが表示されるので、クライアントのコピーコマンドが実際に同じpostgresを使用してはいけないと思いますpsqlとしてのセッション。 あれは正しいですか?その動作を変更する方法はありますか?

2
Oracleセッションクライアントの文字セットを決定しますか?
データベースの文字セット(内)とクライアントの文字セット(クライアント環境設定)がどのように相互作用するかを知っています。NLS_CHARACTERSETselect * from v$nls_parameters;NLS_LANG しかし、私が見つけることができないのは、確立されたセッションについて、現在のクライアントの文字セットがOracleでどのように考えられているかをどのようにして判断できるかです。 これはまったく可能ですか? 注:(10g2の)文字セットは含まれSELECT * FROM NLS_SESSION_PARAMETERS;ません。 私が達成したいことを完全に明確にするために: NLS_LANGはクライアント環境で任意の値に設定されます(たとえばGERMAN_GERMANY.WE8MSWIN1252) データベースアプリケーション[*]が起動し、Oracleデータベースへの接続/セッションを確立します。 データベースアプリケーション[*]は、クライアントの文字セットがOracleが想定するものを(OS環境ではなく)Oracleに「質問」します。 [*]:dbアプリケーションがsqlplusの場合、例は次のようになります。 ... sqlplus /nolog connect user/pass@example *magic command*; CLIENT CHARACTERSET = ... ジャックの彼の答えのメモは、2つの重要なポイントを提起します。 Oracleでは、誰が文字セットの変換を行いますか。それはクライアントライブラリコードですか、それともサーバー側で行われますか? それがクライアントであるように見えるので、クライアントはこの設定を公開する必要があります-クライアントlib / toolがこの設定を想定しているもの。この設定の内容を照会できるOracleクライアントlibs / tools(sqlplus、OCI / OCCI、Pro * Cなど)はありますか?

3
MySQLで西暦1000年より前の日付を処理する最良の方法は?
1000 ADより前に拡張するレコードのデータベースを作成していますが、MySQLのDateおよびDateTimeフィールドは1000から始まる日付のみをサポートしています。 bigint型を使用してUnixタイムスタンプを使用して1970年1月1日の前/後の秒数をカウントする方法、またはより広い日付範囲をサポートするデータベースソフトウェアに切り替える方法よりも便利な方法はありますか?

4
マスター上の大量のリレーログ
私には、今日のところ最近298のリレーbinファイルがあり、298日前まで遡るマスターがあります。 .cnfにリレーログ定義がありません そして mysql> show variables like '%relay%'; +---------------------------------+----------------+ | Variable_name | Value | +---------------------------------+----------------+ | innodb_overwrite_relay_log_info | OFF | | max_relay_log_size | 0 | | relay_log | | | relay_log_index | | | relay_log_info_file | relay-log.info | | relay_log_purge | ON | | relay_log_space_limit | 0 | +---------------------------------+----------------+ スレーブをリセットすると、それらはクリアされますが、その後、再生が開始されます。 …

1
テーブルの圧縮はSQL Serverのバッファプールにどのように影響しますか?
SQL Serverのバッファープールが圧縮データテーブルの影響を受ける方法について知りたいです。 メモリ内のデータは、ディスクと同じように圧縮されていますか、それとも完全に圧縮解除されていますか? データが圧縮されてバッファー・プールに保管されている場合、ステートメントの実行時に、一時的に解凍されたデータのうち、所定の時間にメモリーに保持される量。行/ページ、テーブル全体(データを保持するのに十分な空きページがあると想定)、または「依存する」?

1
データベースユーザーとサーバーログイン、およびそれらの間のマッピング
自宅にSQL Server 2008 R2 Express Editionのインスタンスがあり、Accessをフロントエンドとして使用してアプリケーションを開発するために使用しているクライアント構内のサーバーに別のインスタンスがあります。このアプリケーションには、接続文字列で使用できる5つの個別のログインがあります(ユーザーがいるアクセスグループに基づきます)。ホームインスタンスにはいくつかのデータベースがあります-一部はこのアプリケーションとは何の関係もありません 時間の経過とともに、各インスタンスのログインを手動で作成しました(おそらく別の順序で)。 私が作業しているデータベースのホームマシンからバックアップを(複数回)取得し、復元を使用してクライアントプレミスのインスタンスにロードし、バックアップセットのファイルを実際のファイルに移動することを望んでいます復元処理中にこのサーバーで使用されるファイル。私が理解していない部分は、データベースユーザーとログインの間のマッピングです。 名前の対応で十分だと思っていましたが、復元されたデータベースのユーザーがサーバーログインにマップされていないように見える問題を修正しようとして、Transact-SQLのALTER USERステートメント、特にWITH LOGINの使用への言及と「SID」に関する議論。 サーバーのログイン名にはインスタンスごとに異なるSIDがあると思いますが、インスタンス間のバックアップをロードした後、一連のALTER USER WITH LOGINコマンドを使用してマッピングを再接続する必要があるということですか?

1
「select * into targettable from sourcetable from」が「insert into targettable select * from sourcetable」よりも速い理由
このタイトルが問題です。答えを知りたいです。誰かが言った select intoは最小限のログに記録されます単純な復旧モデルデータベース...私はそれにまったく入りませんでした。 Microsoftからの抜粋: SELECT ... INTOのログの量は、データベースで有効な復旧モデルによって異なります。単純復旧モデルまたは一括ログ復旧モデルでは、一括操作のログは最小限に抑えられます。最小限のロギングで、SELECT…INTOステートメントを使用すると、テーブルを作成してINSERTステートメントでテーブルを生成するよりも効率的です。 助けを求める ありがとう

3
ファクトテーブルの外部キーがnullですか?
私はデータマートの設計に不慣れで、いくつかの概念をクリアする必要があります。 ファクトテーブルにディメンションテーブルへの外部キー参照が格納されていることがわかるディメンションモデリングについて少し読んだことがあります。 ここで、phonenumberディメンションテーブルとphone_extensionディメンションテーブルがあるとします。(これらの表は、詳細が異なるため、組み合わせることができません) 私が理解しているように、これらの両方のディメンションテーブルには、パフォーマンスを向上させるための整数主キーがあり、ファクトテーブルには独自の整数主キーがあり、これらのディメンションテーブルへの外部キー参照も格納されます。 しかし、すべての電話番号に関連するphone_extensionがあるわけではない状況があるとします。(一部の電話番号には内線が必要ありません) 内線番号を持つ電話番号の場合、ファクトテーブルには両方のディメンションテーブルへの外部キー参照がありますが、電話番号のみで内線番号がない(およびその逆、つまり電話番号のない内線番号)状況をどのようにキャプチャしますか? 値とphone_extension外部キーがnullであるファクトテーブルの電話番号FKでこのような情報をキャプチャする必要がありますか?または、そのような非関連オブジェクトがファクトテーブルに記録されていませんか? また、このデータマートのレポートを生成する必要があります。それでは、まずファクトテーブルをクエリしてディメンションキーの値を取得するか、ディメンションテーブルから直接レポートを作成しますか? これを読んでくれてありがとう! 助けてくれてありがとう!!

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