[英]Create new Database in SQL Server 2008 R2
我使用以下代碼在SQL Server 2008 R2中創建一個新數據庫,程序語言為VB.NET:
Dim WEBconnString As String = "Data Source='NewName'; LCID=1032; Case Sensitive = FALSE; SSCE:Database Password=NewDBpass; Encrypt = TRUE;"
Dim engine As New SqlCeEngine(WEBconnString)
engine.CreateDatabase()
另外:
我按照以下說明打開Web服務器連接:
ServerConn.ConnectionString = "Provider=SQLOLEDB; Data Source=" & WebServerName & _
"; Database=master" & _
"; Uid=" & TempUserName & _
"; Pwd=" & TempUserPass
ServerConn.Open()
我還使用數據庫連接,並遵循以下指令:
SQLConn.ConnectionString = "server=" & WebServer & "; Uid=" & AdminName & "; Pwd=" & AdminPassword & "; database=master"
SQLConn.Open()
為了能夠使用我的指令。 我已經在ISP SQL Server中創建了一個臨時數據庫,並且正在使用該數據庫的憑據作為登錄名和密碼。
第一次使用; 它工作正常,意味着在某處創建數據庫
現在,我正在嘗試查看該數據庫,但找不到任何內容
我再次運行相同的代碼,因為它向我暗示未創建數據庫,並且在引擎指令處給我一個錯誤“數據庫存在”
問題是:在哪里打開新數據庫?
請給我我在VB.NET中可能需要的任何解決方案
1)似乎您正在混合使用SqlServerCompact (從4.0版開始可以在ASP.NET中使用的本地數據倉庫)和SqlServer 。 SqlCeEngine
是System.Data.SqlServerCe
命名空間的一部分。 因此,您創建了一個SqCompact文件,並且engine.CreateDatabase()
方法第二次引發異常。 連接字符串似乎正確(對於SqlServerCompact文件)。 如果未在連接字符串中指定完整路徑(只需在此處設置數據庫名稱),則將在執行app.exe
位置創建數據庫(= |DirectoryPath|
)。 您將需要查找擴展名為.sdf
的文件。
2)我不知道ServerConn
是什么類型,但是因為看到"Provider=SQLOLEDB;"
在您的連接字符串中,我想您正在使用OLEDB
類。 您應該改用托管的SqlServer類( System.Data.SqlServer
命名空間)。 因此,您應該使用SqlConnection
, SqlCommand
,...對象。 如果您已經使用它們,則請檢查您的連接字符串,因為提供者有誤。 無論如何,在兩種情況下,您都無法訪問在1)中首先創建的文件。
3)不幸的是,如果您的目標是創建SqlServer Datatase,那么在SqlServerCe
中就沒有SqlServerEngine
類。
要創建數據庫,可以采用以下幾種方法:
System.Data.SqlServer.Smo
類(.Net) 似乎您正在打開與master數據庫的服務器連接。 主數據庫是sql服務器引擎保存有關該服務器上所有數據庫的所有重要信息和元數據的地方。
我需要將database=master
替換為database=WHATEVER DATABASE NAME YOU CREATED
。 其他所有失敗均轉到sql服務器並運行
use master;
select * from sysdatabases
這將為您提供master正在“監視”的每個數據庫的名稱。 找到您嘗試創建的database=master
然后將database=master
替換為database=master
database=the one you found
這是一個易於使用的子程序,用於創建過程:
Public Shared Sub CreateSP(ByVal usp As String, ByVal sender As Object, ByVal e As System.EventArgs)
Dim RetValue As Boolean = False
Try
DBConnection("SQLConn", "SQLUSER", "master", False, sender, e)
Select Case SQLConn.State
Case ConnectionState.Open
MASQLComm = New SqlCommand("CREATE PROCEDURE [dbo].[" & usp & "]" & _
NewLine & " ( " & _
NewLine & "@DBName varchar(50) ) AS " & NewLine & _
"BEGIN_TRY: " & NewLine & " SET QUOTED_IDENTIFIER ON;" & NewLine & " SET NOCOUNT ON; " & _
NewLine & "DECLARE " & _
NewLine & "@ErrMsg nvarchar(4000), " & _
NewLine & "@CreateSdb nvarchar(4000)" & _
NewLine & "SET @CreateSdb =('CREATE DATABASE ' + @DBName )" & _
NewLine & "BEGIN_CATCH:" & NewLine & "SELECT ERROR_MESSAGE() as ErrorMessage;" & _
NewLine & "SELECT @ErrMsg = ERROR_MESSAGE()" & _
NewLine & "EXEC sp_executesql @CreateSdb" & _
NewLine & "RAISERROR (@ErrMsg,2,1)" & _
NewLine & "Return 0" & NewLine & "END_CATCH:" & NewLine & "Return 1" & NewLine & "END_TRY: ", SQLConn)
If MASQLComm.Connection.State = ConnectionState.Open Then
MASQLComm.ExecuteNonQuery()
Else
MASQLComm.Connection.Open()
MASQLComm.ExecuteNonQuery()
End If
End Select
Success = True
Catch ex As Exception
MessageBox.Show(ex.Message, "Class 'DB_Access' CreateSP ", MessageBoxButtons.OK, MessageBoxIcon.Stop)
Success = False
End Try
MASQLComm.Connection.Close()
End Sub
這是用於運行上述過程的代碼:
Public Shared Sub RunSP(ByVal DrivePath As String, ByVal DBname As String, ByVal sender As Object, ByVal e As System.EventArgs)
Try
DBConnection("SQLConn", "SQLUSER", "master", False, sender, e)
MASQLComm = New SqlCommand("EXEC dbo." & procName & " '" & DBname & " '", SQLConn)
MASQLComm.ExecuteNonQuery()
MASQLComm.ExecuteNonQuery()
MASQLComm = New SqlCommand("ALTER DATABASE " & DBname & " SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE", SQLConn)
MASQLComm.ExecuteNonQuery()
Success = True
Catch qx As SqlException
MessageBox.Show(qx.Message, "Class 'NainClass' Run Stored Procdure", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
Success = False
End Try
MASQLComm.Connection.Close()
End Sub
這是SQLconn connectionstring的代碼:
If Not CBool(SQLConn.State) Then
SQLConn.ConnectionString = "server=" & ServNameKeyValue & "; Uid=" & cUserName & "; Pwd=" & cUserPass & "; database=" & DBname
SQLConn.Open()
Else
SQLConn.Close()
SQLConn.ConnectionString = "server=" & ServNameKeyValue & "; Uid=" & cUserName & "; Pwd=" & cUserPass & "; database=" & DBname
SQLConn.Open()
End If
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.