これらのクエリの結果をSQLcmdウィンドウに表示しようとしています。
SELECT SYSDATETIME() AS "date";
PRINT 'EXTRAÍDO POR:'
SELECT SUSER_NAME() AS "Owner"
PRINT 'PASSWORD SETTINGS';
exec xp_loginconfig;
PRINT 'PASSWORD SETTINGS';
select * from sys.sql_logins;
そして、SQLcmdでこのコマンドを使用します。
sqlcmd -S myServer -i inputpath -s, -o outputPath(like C:\log.xls) -e
したがって、sqlcmdはファイルを出力し、sqlcmd画面には何も表示しません。これらの「印刷」コマンドをsqlcmd画面で印刷するにはどうすればよいですか? (コマンドプロンプト)。
SSMSで実行すると、次のようにうまく機能します。
(1行が影響を受けました)OWNER:
(1行が影響を受けます)パスワード設定
(8行が影響を受けます)パスワード設定
SSMSのように、これをプロンプトコマンドで表示したいと思います。
ありがとう!
SQLCMD.EXEにall出力をファイルに送るように指示しているため、コマンドウィンドウには何も表示されません。 _-o
_スイッチを使用します。結果をファイルに送信し、メッセージを画面に(ファイルにではなく)送信する場合は、_-o
_スイッチを使用できません。
代わりに、_>
_のように、コマンドラインで_> log.xls
_を使用して、出力(つまり "stdout")を手動でファイルにリダイレクトする必要があります。ただし、デフォルトでは、PRINT
メッセージも「stdout」に送信されるため、_-r1
_スイッチを使用してそれらを「stderr」に送信する必要があります(そのため、ファイル)。 (C:\への書き込みは良い習慣ではないので、多分[〜#〜] temp [〜#〜]ディレクトリ/フォルダーを作成し、またはそのようなもの):
_SQLCMD -S (local) -i script.sql -s, -e -r1 > C:\TEMP\log.xls
_
コマンドウィンドウに次のように表示されます。
EXTRAÍDOPOR:
パスワード設定
パスワード設定
「(18行に影響あり)」は出力ファイルに残ります。これをファイルではなくウィンドウに表示したい場合は、次のことを行う必要があります。
SET NOCOUNT ON;
_を追加しますSELECT
およびEXEC
の後に)PRINT '(' + CONVERT(VARCHAR(10), @@ROWCOUNT) + ' rows affected)';
を追加します。これらの2つの手順を実行すると、コマンドウィンドウに次のように表示されます。
(1行が影響を受けました)
EXTRAÍDOPOR:
(1行が影響を受けました)
パスワード設定
(8行が影響を受けます)
パスワード設定
(18行が影響を受けました)
また:
-e
_スイッチを削除する必要がある場合があります( 。xlsファイル拡張子を指定して実行したい)。OSの地域設定と、ログインのデフォルトデータベースのデフォルト照合に関連付けられているコードページによっては、_Í
_文字が正しく表示されるように、コマンドウィンドウの現在のコードページを変更する必要がある場合があります。
意味:私は米国にいるので、コマンドウィンドウのデフォルトコードページは437ですが、ログインのデフォルトデータベースの照合順序は、コードページ1252を使用する_Latin1_General_*
_照合順序です。SSMSでは、_PRINT 'EXTRAÍDO POR:'
_は次のように表示されます。 :
EXTRAÍDOPOR:
[メッセージ]タブ。 しかし、、コマンドプロンプトウィンドウに次のように表示されます:
EXTRAIDO POR:
コマンドプロンプトに「Í」ではなく「I」が表示される。これを修正するには、コマンドプロンプトウィンドウで次を実行する必要がありましたbeforerunning [〜#〜] sqlcmd [〜#〜]:
_chcp 1252
_
追伸いいえ、このスクリプトではGO
は必要ありません。
PowerShellを使用する場合は、次のようなことができます。
sqlcmd -i inputpath -S myServer -E -d MYDB | Tee-Object -file "C:\log.xls"