'GO' 근처의 구문이 잘못됨
ADO.NET을 통해 단일 명령(단일 실행) 내에서 다음 SQL을 실행하려면 어떻게 해야 합니까?
ALTER TABLE [MyTable]
ADD NewCol INT
GO
UPDATE [MyTable]
SET [NewCol] = 1
배치 구분자GO
지원되지 않으며, 지원되지 않으면 두 번째 문이 실패합니다.
여러 개를 사용하는 것 외에 다른 해결책이 있습니까?command
처형?
그GO
키워드는 T-SQL이 아니라 스크립트 파일의 실행을 여러 배치로 분리할 수 있는 SQL Server Management Studio 아티팩트입니다.예를 들어, SSMS에서 T-SQL 스크립트 파일을 실행할 때, 명령문은 다음과 같이 구분된 배치로 실행됩니다.GO
키워드자세한 내용은 https://msdn.microsoft.com/en-us/library/ms188037.aspx 에서 확인할 수 있습니다.
이 문서를 읽어보면 sqlcmd 및 osql에서도GO
.
SQL Server는 다음을 이해하지 못합니다.GO
키워드따라서 동등한 것이 필요한 경우 배치를 개별적으로 분리하여 실행해야 합니다.
제거합니다.GO
:
String sql = "ALTER TABLE [MyTable] ADD NewCol INT;";
cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
sql = "UPDATE [MyTable] SET [NewCol] = 1";
cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
당신은 그것을 위해 수업을 이용할 수 있을 것 같습니다.다음은 기사입니다.
C#: GO 문이 포함된 배치 T-SQL 스크립트 실행
SSMS(SQL Server Management System)에서는 쿼리 후 GO를 실행할 수 있지만 캐치가 있습니다.세미콜론과 GO를 같은 줄에 둘 수 없습니다.계산해 보세요.
효과:
SELECT 'This Works';
GO
이 기능도 작동합니다.
SELECT 'This Too'
;
GO
하지만 이것은 그렇지 않습니다.
SELECT 'This Doesn''t Work'
;GO
이 문제는 배치 구분 기호가 설정에서 변경된 경우에도 발생할 수 있습니다.SSMS에서 Tools --> Options를 클릭하고 Query Execution/SQL Server/General(쿼리 실행/SQL 서버/일반)으로 이동하여 배치 구분자를 확인합니다.
저는 방금 CRLF 줄 끝이 없는 스크립트로 인해 실패를 겪었습니다.스크립트를 닫았다가 다시 열면 해결 메시지가 표시되는 것 같습니다.또 하나 확인해야 할 것이 있습니다!
세미콜론을 넣었습니다.;
그 후에GO
그것이 내 실수의 원인이었습니다.
내 쿼리가 SSRS에서 작동하지 않는 이유를 확인하는 중에 이 문제를 발견했습니다.사용 안 함GO
SSRS에서는 서로 다른 문 사이에 세미콜론을 사용합니다.
IF 문을 사용하고 잘못 닫은 경우에도 이 오류가 발생합니다.
IF 문이 한 줄보다 긴 경우 BEGIN/END를 사용해야 합니다.
효과:
IF @@ROWCOUNT = 0
PRINT 'Row count is zero.'
그러나 두 줄이 있는 경우 다음과 같이 표시됩니다.
IF @@ROWCOUNT = 0
BEGIN
PRINT 'Row count is zero.'
PRINT 'You should probably do something about that.'
END
SQL 쿼리 뒤에 'GO' 키워드를 같은 줄에 놓았을 때 다음과 같은 오류 메시지가 표시되었습니다.
insert into fruits (Name) values ('Apple'); GO
이것을 두 줄로 나누어 쓰면 됩니다.이게 누군가에게 도움이 될지도...
처음에 제거하려고 했습니다.GO
일의한문에 패턴 .(?:\s|\r?\n)+GO(?:\s|\r?\n)+
더 많은 했습니다. regex는 SQL과 호환되지 않습니다.
하지만 @tim-schmelter 답변 덕분에 패키지를 사용하게 되었습니다.
string sqlText;
string connectionString = @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=FOO;Integrated Security=True;";
var sqlConnection = new System.Data.SqlClient.SqlConnection(connectionString);
var serverConnection = new Microsoft.SqlServer.Management.Common.ServerConnection(sqlConnection);
var server = new Microsoft.SqlServer.Management.Smo.Server(serverConnection);
int result = server.ConnectionContext.ExecuteNonQuery(sqlText);
언급URL : https://stackoverflow.com/questions/25680812/incorrect-syntax-near-go
'programing' 카테고리의 다른 글
Vuex 게터를 사용하여 Vuetify 선택 (0) | 2023.07.12 |
---|---|
Python Logging - 가져온 모듈에서 로깅 사용 안 함 (0) | 2023.07.12 |
Mongodb + Atlas: '잘못된 인증 인증 실패.', 코드: 8000, (0) | 2023.07.07 |
How to find a min/max with Ruby (0) | 2023.07.07 |
Gdata package perl 문제 (0) | 2023.07.07 |