どのように私はすべての私のDBのを介して反復し、各従業員のテーブルの行数を取得できますか? 各クライアントには独自のDBがあり、各DBの総従業員を見つける必要があります。DB内の特定のテーブルのテーブルの行数を取得
はsp_MSforeachdb
sp_MSforeachdb
@command1 = 'select count(*) from employee'
別々のテーブルに出力することができるか、DB名wihtつのテーブルで良いでしょうを使用する方法を把握しようとして。
どのように私はすべての私のDBのを介して反復し、各従業員のテーブルの行数を取得できますか? 各クライアントには独自のDBがあり、各DBの総従業員を見つける必要があります。DB内の特定のテーブルのテーブルの行数を取得
はsp_MSforeachdb
sp_MSforeachdb
@command1 = 'select count(*) from employee'
別々のテーブルに出力することができるか、DB名wihtつのテーブルで良いでしょうを使用する方法を把握しようとして。
について
DECLARE @sql nvarchar(1000)
SET @sql = 'Use [?];'
+ 'IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ''dbo'' AND TABLE_NAME = ''employee''))'
+ ' BEGIN'
+ ' SELECT COUNT(*) from [employee]'
+ ' END'
exec sp_MSforeachDB @sql
TABLE_SCHEMA = '' DBO '' は、ほとんどの場合、ここでは省略可能である方法。 ..
「[?];」の構文については、[joewのブログ](http://weblogs.sqlteam.com/joew/archive/2008/08/27/60700.aspx)テーブルが存在するかどうかをチェックするためには[別のスタックオーバーフローに関する質問](http://stackoverflow.com/questions/167576/sql-server-check-if-table-exists)を参照してください。 – perfectionist
ありがとうございました。私はまた私の ''に追加しました? ''選択してください。 SELECT ''? ''、COUNT(*)を使用してテーブル名を取得します。それらは一重引用符です。 –
あなたは(それが?
にあります)最初に使用するデータベースにそれを伝える必要があります:
EXEC sp_MSforeachdb
@command1='use ?; select count(*) from employee'
DBのほとんどすべてが同じですが、1つだけに従業員テーブルがありません。 –