Setup:
CREATE TABLE MyTest (TestCol1 nchar(5))
prova:
A seguito dei lavori:
Invoke-Sqlcmd -Database "databasename" -ServerInstance "hostname" -OutputSqlErrors $True -Query "INSERT INTO MyTest VALUES ('`$5')"
Invoke-Sqlcmd -Database "databasename" -ServerInstance "hostname" -OutputSqlErrors $True -Query "INSERT INTO MyTest VALUES ('(5')"
seguito non riesce con il seguente errore:
Invoke-Sqlcmd -Database "databasename" -ServerInstance "hostname" -OutputSqlErrors $True -Query "INSERT INTO MyTest VALUES ('`$(5')"
Invoke-Sqlcmd -Database "databasename" -ServerInstance "hostname" -OutputSqlErrors $True -Query "INSERT INTO MyTest VALUES ('`$`(5')"
Errore: Invoke-Sqlcmd: Alla riga: 1 carattere: 1 + Invoke-Sqlcmd -Database "databasename" -ServerInstance "hostname" -Ou ... + ~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~ + CategoryInfo: ParserError: (:) [Invoke-Sqlcmd], ParserException + FullyQualifiedErrorId: ExecutionFailureException, Microsoft.SqlServer.Management.PowerShell.GetScriptCommand
Aftersome research ho trovato $ (fornisce funzionalità in PowerShell quindi è riservato. Comunque ho provato a scappare dalla parentesi ma senza successo. Ho provato a trovare un'alternativa. Qualche idea su come posso fare questo? Se utilizzo la funzione CHAR in SQL Server che funziona, sarebbe un problema affrontarlo nel mio codice. Grazie.
Per fornire una ragione per cui questo funziona: In PowerShell, stringhe tra doppi apici (' "ciao"') vengono analizzati per le variabili. Le stringhe con quotatura singola (''hello'') sono trattate come stringhe letterali e non vengono mai analizzate. Prova quanto segue: '$ x = 0; "$ X"; '$ X''. Detto questo, il tuo primo esempio '" INSERT INTO MyTest VALUES ('\ '$ (5')" 'dovrebbe funzionare .. Questa è una stringa corretta –
@BaconBits Penso che questo commento sia stato migliore nell'OP, non nella mia risposta O è per me questo commento? :) –
Se lo eseguo in questo modo, mi aspetto più caratteri con il prompt >>. – Russ960