【问题标题】:Ansible invoke-sqlcmd fails with Invoke-Sqlcmd : Windows PowerShell is in NonInteractive mode. Read and Prompt \r\nfunctionality is not availableAnsible invoke-sqlcmd 因 Invoke-Sqlcmd 失败:Windows PowerShell 处于非交互模式。读取和提示\r\n功能不可用
【发布时间】:2019-03-08 10:40:05
【问题描述】:

我正在尝试使用 ansible 在远程 SQL 服务器实例上运行查询 调用-sqlcmd。它无法在其中一个实例上执行并返回结果。 在所有其他人的运行没有错误。

不知道这是否是 Ansible 或 powershell 或 SQL Server 让 ansible 通过 win-shell 查询的问题。

- hosts: localhost
  gather_facts: false
  tasks:
    - name: kerberos ticket for individual svc account
      include_tasks: dbserveraudit_kerbinit.yml
      vars:
        ansible_user: "{{ hostvars[item]['svc_user'] }}"
      with_items: "{{ groups['current_sqlservers'] }}"

- hosts: management
  gather_facts: false
  tasks:
    - name: Test sql Connection using svc account
      include_tasks: **dbserveraudit_checksqlconnectivity**.yml
      vars:
        ansible_user: "{{ hostvars[item]['svc_user']  }}@{{admin_domain | upper }}"
        sqlserver: "{{ hostvars[item]['svc_user'] | regex_replace('svc','') }}"
      with_items: "{{ groups['current_sqlservers'] }}"

dbserveraudit_checksqlconnectivity.yml

- block:
    - name: Connect and run query on current db server
      win_shell: Invoke-Sqlcmd -Query "SELECT SERVERPROPERTY('ServerName')" -ServerInstance {{ sqlserver }} -Verbose -OutputSqlErrors 1 -AbortOnError -querytimeout 65335 -Debug 
      register: connectsql
      ignore_errors: true

错误我得到是-

"Invoke-Sqlcmd : Windows PowerShell 处于非交互模式。阅读 和提示\r\n功能不可用。\r\n在第 1 行 char:65\r\n+ [控制台]::InputEncoding = New-Object Text.UTF8Encoding $假; \r\nInvoke-Sqlcmd -Q ...\r\n+

+ CategoryInfo          : InvalidResult: (US02PRDSQL271B:PSObject) [Invoke \r\n   -Sqlcmd], PSInvalidOperationException\r\n    +
FullyQualifiedErrorId :
ExecutionFailed,Microsoft.SqlServer.Management.P \r\n  
owerShell.GetScriptCommand",


【问题讨论】:

  • 在这里发布您使用的错误和命令将非常有用。当你没有说代码,或者代码产生的错误时,调试代码真的很难。
  • @Larnu 谢谢你的指出。所以我们有一个循环调用任务簿的剧本。都添加了 sn-p

标签: sql sql-server powershell ansible


【解决方案1】:

详细程度使用交互式输出。将输出通过管道传输到日志文件或 NUL: 提示:无限查询超时为:0 ;) 试试:

$Log: "c:\temp\test.txt"
(Invoke-SqlCmd -query "Select 1" -Verbose -OutputSqlErrors 1 -AbortOnError -querytimeout 0 -Debug) *>> $Log

【讨论】:

    猜你喜欢
    • 2014-04-15
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 2012-09-13
    相关资源
    最近更新 更多