回答:
場合によります。
大きな店では、おそらく何千台ものサーバーを管理し、ツールが提供されているためではありません。小さなお店では、より広い権限を持っているため、おそらくより多くの知識が必要になります。
スクリプト言語(PowerShell、cmd.exeなど)は常に監視や展開などに役立ちます。私はしばしば(ほぼ)維持しなければならないPerlスクリプトをいくつか持っていました。それから、あなたが知っておくと期待される様々なETLパッケージがあります。
そうは言っても、ほとんどのDBA(私が知っている)は基本的なCLRのことを書いたり、PL / SQLをよく知っているでしょう。私にとって、境界線は.netまたはJavaのより広範なパターンまたはアーキテクチャについて知っています。DB開発者やDBAとしては必要ありません。同じように、.net、PHP、またはJava Monkeysは、データベースデザイン、アーキテクチャ、またはコードを私と同じように理解していません。
個人的に、私は数年前に最新または最高のクライアント言語を追いかけるのをやめて、データベース作業に集中することにしました。だからといって「プログラマーではない」わけではありません。必要に応じて、もう一度学ぶ必要があります。
私は、DBAがプログラミングスキルをほとんど、またはまったく習得しないことを知っていますが、私がこれまで良いと考えていたすべてのDBAには、少なくとも合理的なプログラミングスキルがありました。私が考えることができる1つまたは2つは、かなりの開発バックグラウンドを持ち、それ自体でかなり良い開発者でした。日々の仕事でDBAとして働く人々とTOADを書いたIIRCがDBAとして働いていたIIRCによって書かれたかなりの 量のオープンソース ツールがあります。
役割に応じて、クエリの作成や調整、タスクの自動化のためのスクリプトの作成、アプリケーション設計に関するコンサルティングを行うことがあります。場合によっては、OEMまたはその他の監視ツールを介して多数のサーバーを気にすることもあります。
.NetやJavaなどの現代の「エンタープライズ」開発環境は非常に複雑であるため、開発者はそれらに特化するだけでキャリアを積むことができます。DBAとして、特に開発分野では、C#またはJavaの実用的な知識があれば害はないかもしれませんが、実際にそれらをコーディングするのに多くの時間を費やすことはないでしょう。
多くのシステムは.Net、Java、COM、またはWebサービスAPIを公開していますが、プラットフォームで使用されているスクリプトツールからより多くのマイルを獲得できます。これらのAPIに対して何かをコーディングする必要がある場合は、少なくともそのAPIを使用できるものに関する基本的な実用的な知識が必要です。ただし、通常、高度なアプリケーションアーキテクチャのスキルは必要ありません。
一部の開発者には強力なデータベーススキルがありますが、データベースに対する不合理な恐怖は開発サークルでは非常に一般的です。また、多くの開発者は、SQLの根底にある「セット操作」パラダイムに頭を悩ませることはありません。開発DBAとして、この結果に対処することができ、パフォーマンスの問題を整理するためにストアドプロシージャコードに介入する必要がある場合があります。
データベースを取り巻くETLおよびツールも、DBAの権限に含まれます。かなりの量のバックエンド開発作業が関係していると思われる、かなりの数のDBAの役割を見てきました。これは中小企業で最も一般的です。最近の投稿者の 1人は、カスタムメトリックをOracle Enterprise Managerに統合したいと考えていました。これには、これを行うプラグインAPIがあります。このような要件を見つけることは非常に一般的であり、本質的にこれへの唯一の方法は接着剤コードを書くことです。
ITで働く「Tools Guys」はたくさんあり、偏狭心症にもかかわらず有用な仕事をこなすことができます。ただし、ツールが使い果たされた場合、何かを成し遂げる唯一の方法は、実際にそれを行うためのコードを実際に書くことです。これは、プログラミングスキルが男性と男性を区別する場所です。
私は通常、そうは言いませんが、痛いことはありません。SQL Serverは十分に大きいため、1人で製品全体をマスターできるとは思いません。私はSQL Server 4.2からDBAであり、ほとんどの分野の専門家であると考えていますが、すべての段階でGoogleなしでMDXクエリを書くことはできません。
私が言いたいのは、あなたがすべての専門家になることはできないということです。本当に優れたDBAであるということは、T-SQLに精通している必要がありますが、.NETにはあまり得意ではないか、少なくとも.NETに時間を集中できる他の人ほど効果的ではありません。
Powershellは、SSISのインアンドアウトと同様に知っておくとよいでしょう。それ以外は、他の開発言語は開発者に任せてください。
私の経験では、ほとんどのDBAには何らかの開発の背景がありますが、コードを書く必要はまったくありません。私が携わった非常に優れたDBAには、シェルスクリプト、オペレーティングシステム、および専門的なアプリケーションの知識(PeopleSoftなど)を含むさまざまなトピックに関する広範な知識があります。
大学院のデータベース管理者のインストラクターがいて、優れた(Oracle)DBAが答えるべき質問のリストを教えてくれました:(40ほどのリストからハイライトの一部を投稿します)
(Oracle)DBAは、これらのことを効果的に知る必要があります。私が知っているほとんどの開発者(誰がOracleに対してコードを作成するか)は、これらのうちの1つまたは2つでも正しく答えることが難しいでしょう。
あなたがDBAであるなら、おそらくパフォーマンスとセキュリティの領域で作業しているでしょう。これには、開発者が作業しているクライアントアプリケーションのプロファイリングと調整が含まれます。したがって、開発者が使用している言語の基本と、データベースサーバーとのインターフェイス方法を知っていても、確かに害はありません。SQL Serverの場合、それはおそらく.NETです。MySQLの場合、おそらくphpまたはjavaのいくつかの組み合わせ。
たとえば、サーバーがクライアントスレッドを必要とする場合、単一のデータベース接続を再利用できるように、ObjectDataSourcesにシングルトンインスタンスを使用する必要があることを開発者に通知できると役立ちます。また、SQLインジェクションを制限するために、パラメーター化されたクエリを適切に使用していることも確認してください。そのようなもの。
厳密にDBAであれば、クライアントアプリケーションを開発するという意味でプログラミングを行うことはありませんが、それらがどのように機能するかを知っておく必要があります(一般的に言えば)。
さて、見てみましょう、OracleはPascal(デスクトップアプリのコードを生成するために使用されていた言語ですが、近年減少し、開発者はDelphiに移行しました。そこから.NETまで)、Oracleは一部のアクティビティでJavaもサポートするようになりました。Oracle DBAは、システムのすべての側面を十分に理解する必要があるため、PascalとJavaを知っていることが必要だと思います。
TSQLには、SQL Serverの一部の機能の.NET(CLR)マネージコードを記述する能力があるため、優れたDBAはおそらくこれについて知る必要があります(ただし、古いバージョンでは常に使用できるとは限らないため、私の経験では、DBAの多くはその機能セットを避けています。
これが大きな2つであり、ほとんどの人があなたが尋ねているときに尋ねるときに参照するものです。私は他のすべてのエンジンが何をサポートしているのか知りませんが、他の多くのエンジンもSQL以外の言語統合を持っていることを知っています。