我写了一个小应用程序。在第一次运行应用程序时,我想将SQL脚本上载到本地SQL Server Express实例。
在我的开发机器上,我创建了数据库和表,并使用SSMS将脚本导出到sql文件。我可以将该文件导入SSMS并执行它,然后创建数据库。我不知道如何使用VB.NET执行相同的过程
我将sql文件作为资源添加到我的项目中,并且我已经包含了下面的前几行
USE [master]
GO
/****** Object: Database [MyProject] Script Date: 5/04/2016 11:30:42 PM ******/
CREATE DATABASE [MyProject]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'MyProject', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\MyProject.mdf' , SIZE = 4160KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'MyProject_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\MyProject_log.ldf' , SIZE = 1040KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
ALTER DATABASE [MyProject] SET COMPATIBILITY_LEVEL = 110
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [MyProject].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [MyProject] SET ANSI_NULL_DEFAULT OFF
...
...
USE [MyProject]
GO
/****** Object: Table [dbo].[SomeTable] Script Date: 5/04/2016 11:30:42 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[SomeTable](
[Identifier] [int] IDENTITY(1,1) NOT NULL,
....
然后我使用下面的代码将SQL上传到数据库
Private Sub Create_SQL_Database()
Dim connetionString As String = "Data Source=localhost\SQLEXPRESS;Trusted_Connection=YES"
Dim cnn As SqlConnection = New SqlConnection(connetionString)
Dim cmd As SqlCommand = New SqlCommand()
Try
cnn.Open()
Console.Writeline("Connection Open ! Attempting to create database")
cmd.CommandText = My.Resources.CreateDatabaseSQL
cmd.Connection = cnn
Try
cmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show("Error - " & ex.Message)
End Try
这不起作用,我在消息框中收到了很多错误 - 语法不正确“GO' ,然后是数据库' MyProject'不存在。确保正确输入名称。
我尝试删除包含GO的所有行,但仍然留下错误 - 数据库' MyProject'不存在。确保正确输入名称。
我不是这方面的专家,但在我看来GO命令会将更改提交给数据库。因为当脚本到达此行时,我已经删除了带有GO的行
USE [MyProject]
数据库不存在,因为之前的步骤尚未提交。
在VB.NET中我需要做什么才能将此文件上传到数据库并创建我的数据库和表?
感谢。