![]() |
Datenbank: mssql • Version: 2005 • Zugriff über: ...
Sql string
Guten Morgen miteinander,
ich baue in meinem vba-script eine verbindung zu einer datenbank auf .. und möchte nun gerne eine neue datenbank anlegen, wenn diese noch nicht angelegt worden ist. habe das ganze auch schon im mssql-editor getestet und funktioniert einwandfrei .. wenn ich das ganze jedoch in vba schreibe .. und das ganze als string an die variable SQL" übergebe.. bringt der mir gleich am anfang den fehler .. "incorrect syntax near 'GO'" was ich von anfang an ausschließen kann .. ist.. dass mir die authorisierungsrechte fehlen .. ich selber bin admin weiß rein zufällig jemand rat ? hier der code ..
Code:
danke für eure mithilfe !
Cn.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=cobw6872;" & _ "Initial Catalog=Master;" & _ "Integrated Security=SSPI" Set conn = CreateObject("ADODB.Connection") conn.Open Cn MsgBox "Verbindung aufgebaut" SQL = ("USE Master " _ & " GO " _ & " IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'kunde') " _ & " DROP DATABASE [kunde]" _ & " CREATE DATABASE [kunde] ON (NAME = N'kunde'," _ & " Filename = N 'C:\Projects\Databases\kunde.MDF' ," _ & " SIZE = 5," _ & " FILEGROWTH = 10%)" _ & " LOG ON (NAME = N'kunde_Log'," _ & " Filename = N 'C:\Projects\Databases\kunde_Log.LDF' ," _ & " SIZE = 5," _ & " FILEGROWTH = 10%)" _ & " USE kunde" _ & " GO") MsgBox SQL conn.Execute (SQL) |
AW: Sql string
Der Query-Analyser führt mehrere Befehle nacheinander aus. Das geht so aber nicht aus Delphi oder VBA heraus. Dort kann immer nur ein Befehl mit Execute ausgeführt werden. Alternativ kannst du ja mal versuchen aus den vielen Einzelbefehlen einen Befehl zumachen, indem du alles in ein SQL-Execute packst...
SQL-Code:
SQL = "EXECUTE('" & Replace(SQL, "'", "''") & "')"
|
AW: Sql string
"incorrect syntax near 'GO'"
....weil GO kein SQL-Statement ist. Du musst das ganze Script zerlegen, mit "GO"´s splitten. Dann sieht es in etwa so aus:
Code:
sql = "USE Master "
' sql ausführen sql = "IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'kunde') " _ & " DROP DATABASE [kunde]" ' sql ausführen sql = "CREATE DATABASE [kunde] ON (NAME = N'kunde'," _ & " Filename = N 'C:\Projects\Databases\kunde.MDF' ," _ & " SIZE = 5," _ & " FILEGROWTH = 10%)" _ & " LOG ON (NAME = N'kunde_Log'," _ & " Filename = N 'C:\Projects\Databases\kunde_Log.LDF' ," _ & " SIZE = 5," _ & " FILEGROWTH = 10%)" ' sql ausführen sql = "USE kunde" ' sql ausführen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz