データベース管理者

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

1
Oracle Instant Clientでの名前検索にLDAPを使用
一部は、Oracleクライアントの完全なインストールと競合するバージョンまたはビットの問題があるため、私の開発チーム(メンバー)は、Oracle Instant Clientを使用し、ほとんどの場合、開発マシンへのインストールを避けようとしています。新しいプロジェクト。これは、このセットアップを使用して実稼働環境に展開するまで、非常にうまく機能しています。私たちはほとんどが.NETショップであるため、Javaクライアントではなく、ネイティブクライアント(.NETラッパーを使用)を使用しています。 クライアントは、データベースサービスをLDAPサーバーに登録し、名前の検索にLDAPサーバーを使用することを要求しています。それらは、正しいと思われるファイル(および付随する暗号化構成ファイル)を提供sqlnet.oraしていldap.oraます。特に、sqlnet.oraファイルは、ネットサービス名を検索するための可能なソースとしてLDAPを指定します。 names.directory_path=(tnsnames,ldap) SQL Developerを使用してアクセスできたため(LDAP情報を直接入力できるようになったため)、作業しているマシンがLDAPを使用してサービスにアクセスできると確信しています。それらが正しいと仮定すると、Instant Clientにこの構成を認識させ、名前検索にLDAPを使用するにはどうすればよいですか? 今まで試したこと TNS_ADMIN提供されたファイルを含むディレクトリに環境変数を設定しようとしましたが、これはInstant Clientにtnsnames.oraファイルを認識させるのには問題なく動作しますが、LDAPを調べ始めるには十分ではないようです。結果は次のとおりです(パス、ユーザー名、パスワードが変更されました): (次のコマンドはたまたまWindowsコマンドプロンプトですが、Linuxでも同様のことが実行できると思います。ここでsqlplus見られるのは、同じディレクトリ内のインスタントクライアントバイナリを伴うインスタントバージョンでもあります。) C:\TEMP>SET TNS_ADMIN=C:\path\to\sqlnet\ldap\and\tnsnames\ora\files C:\TEMP>echo %TNS_ADMIN% C:\path\to\sqlnet\ldap\and\tnsnames\ora\files C:\TEMP>sqlplus.exe USERNAME/PASSWORD@LOCALTNSNAME SQL*Plus: Release 11.2.0.2.0 Production on Mon Jul 7 10:22:25 2014 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With …
14 oracle 

4
MySQL-テーブルを変更して自動的にUUIDを入れる
わかりました、私はこれを前にしたことを知っています。しかし、私はそれを理解することはできません。テーブルを作成しました。列の1つは「LogID」というラベルが付けられており、主キーでもあります。 この列が新しいエントリごとにUUIDを生成するように変更するにはどうすればよいですか? ありがとう
14 mysql 

2
主キーを追加する前に、または後にページレベルの圧縮を追加する必要がありますか?
状況 SQL Server 2008 Enterpriseのデータウェアハウス 3,600万行以上のヒープ(問いません)、60列以上 毎月75万件追加 主キーが定義されていません(現在識別されています) 圧縮なし 私が考えていること(この順序で) ページレベルの圧縮を追加する PKを追加します 多数の非クラスター化インデックスを追加する できるだけ早くこれを行う 質問 最終的には、最初にPKまたはページ圧縮を追加しますか?(重要ですか?) 最初に圧縮をテーブルに追加すると、インデックスはテーブルレベルの圧縮設定を継承しますか?この特定の質問に対する答えは、「いいえ、圧縮は継承されません」です。dba.stackexchangeにあります。 私が今傾いていること -- Add page level compression alter table dbo.TableName rebuild with (data_compression = page) ; go -- Add primary key alter table dbo.TableName add constraint PK_TableName primary key clustered (<Columns>) ; go -- …

3
IDENTITY列のみを持つテーブルに挿入する方法は?
IDENTITY列のみを持つテーブルがある場合、新しい行をどのように挿入しますか?私は次を試しました: INSERT INTO TABLE (Syntax error) INSERT INTO TABLE VALUES() (Syntax error) INSERT INTO TABLE (Id) VALUES() (Syntax error) 私は何かをテストしていますが、IDENTITY列のみが必要です。本番用ではありません。それ以外の場合、このようなテーブルは、他の列が不要なシーケンスジェネレーターとして使用できます。


2
データベースエンジンとは正確には何ですか?
私はhttp://en.wikipedia.org/wiki/Database_engineの定義を数回繰り返しました。 データベースエンジン(または「ストレージエンジン」)は、データベースからデータを作成、読み取り、更新、削除(CRUD)するためにデータベース管理システム(DBMS)が使用する基礎となるソフトウェアコンポーネントです。 私が理解していないのは、やらなければならないことです。データベースが行うすべてのことをCRUDではありませんか? データベースエンジンがこれらの機能を実行する場合、データベースの残りの部分は何をしますか?

1
PostgreSQLに1バイト整数を格納する方法は?
PostgreSQLのドキュメントでは、整数データ型は2バイト、4バイト、または8バイトのスペースに格納できると言われています。データベース内のテーブルの列の1つに1バイトの整数値が含まれていて、それを1バイトのデータ型で格納したい。 PostgreSQLで1バイト整数データ型を使用する拡張機能または方法はありますか? NUMERIC(1,0)は何バイトですか?

4
主キーで複数の行を返す結合から最初の行を選択する方法
これはこの質問に関連しています: 複数のテーブルを結合すると重複した行が発生します 参加しているテーブルが2つあります。彼らは鍵を共有します。personテーブルには主キーごとに1つの名前がありますが、emailテーブルにはpersonIdごとに複数のメールがあります。1人あたりの最初のメールのみを表示します。現在、メールが複数あるため、1人に複数の行が表示されます。SQL-Server 2005を実行しています。 編集:これはT-SQLです。最初のメールは文字通り、1人あたりの最初のメール行です。 編集2:最初の電子メールは、SQLがクエリを処理するときに結合に表示される最初の電子メール行になります。どのメールが表示されるかは関係ありません。表示されるメールは1つだけです。それがより明確になることを願っています。 Table1: Person Table2: Email Select Person.PersonName, Email.Email From person left join on Person.ID=Email.PersonId;

2
複数の条件があるケース
いくつかの条件に基づいて、selectステートメントからの戻り値を変更する必要があります。私はそのようなことを試しました: ,CASE i.DocValue WHEN 'F2' AND c.CondCode IN ('ZPR0','ZT10','Z305') THEN c.CondVal ELSE 0 END as Value なぜそれが機能していないのですか、これを行うための推奨方法は何ですか?次のWHEN条件がいくつかあります。 ありがとうございました
14 sql-server 

3
PostgreSQLスキーマ名の有効な形式は何ですか?
PostgreSQLスキーマ名の有効な形式を説明するドキュメントが見つからないようです。スキーマ名では次のことはできません。 数字で始める スペースがあります 皮切りに pg_ ほかに何か?どこを見ればいいですか?
14 postgresql 

2
末尾にスペースがあるVarcharの動作
スペースを含むVarcharを使用すると、末尾のスペースが無視されます。 例: declare @X varchar(50) この... set @X= 'John' ...と同じです... set @X= 'John ' これらは等しいと見なします。システムにこれらを異なるものとして認識させるにはどうすればよいですか?

1
PostgreSQLでのJSONBのクエリ
私は、テーブルを持つpersons2つの列が含まれている、idとJSONBベースのdata列を(この表は単なるPostgreSQLのJSONサポートで遊んする実演目的のために作られました)。 ここで、2つのレコードが含まれていると想定します。 1, { name: 'John', age: 30 } 2, { name: 'Jane', age: 20 } ここで、25歳以上のすべての人の名前を取得したいとします。私が試したのは次のとおりです。 select data->'name' as name from persons where data->'age' > 25 残念ながら、これはエラーになります。の->>代わりにを使用して解決でき->ますが、数値は比較されないため、比較は期待どおりに機能しなくなりますが、文字列としての表現: select data->'name' as name from persons where data->>'age' > '25' 次に、を使用->してキャストすることで問題を実際に解決できることがわかりましたint: select data->'name' as name from persons where cast(data->'age' as int) > …

2
存在する場合は更新、そうでない場合は挿入
というテーブルにSTORED PROCEDURE使用されるを作成しようとしています。このテーブルには3つの列(、および)があります。UPDATEmachinemachine_idmachine_namereg_id 上記の表のreg_id(INT)は、の値を変更できる列ですmachine_id。 QUERY/ を定義して、そのテーブルにすでに存在するPROCEDUREかどうかを確認reg_idします。ある場合はUPDATEその行、そうでない場合INSERTは新しい行。 誰かがその書き込みに助けを私にしてくださいすることができますQUERY/をPROCEDURE?
14 mysql 

2
どのセッションがどの一時テーブルを保持しているかを見つける
一時データベースがいっぱいになったSQL Server 2005データベースがあります。SQL Server Management Studioにアクセスすると、tempdbのすべての一時テーブルを確認できます。どのセッションがどの一時テーブルを保持しているかを知ることはできますか?理想的には、各セッションで使用される一時テーブルをリストするクエリです。 おかげで、

5
テーブルを切り捨てるにはどのような権限が必要ですか?
データベースに対する次の権限を持つSQLアカウントを持っています。 db_executorこのアカウントは、このスクリプトによって作成されたの一員として見役割: CREATE ROLE [db_executor] AUTHORIZATION [dbo] GO GRANT EXECUTE TO [db_executor] GO テーブルで、、またはを実行するselectとupdate、正常に動作します。テーブルにアクセスしようとすると、次のエラーメッセージが表示されます。insertdeletetruncate オブジェクト "TableName"が存在しないか、権限がないため、見つかりません。 このアカウントにはどのような権限がありませんか?

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