先引用 sql-dmoOption Explicit
Public Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long '获取客户机主机名的api
Global oRegistry As SQLDMO.Registry 'DMO的注册表对象
Global oSqLServer As SQLDMO.SQLServer 'DMO的数据服务器对象
Global oDatabase As SQLDMO.Database 'DMO的数据库对象
Global oDBFile As SQLDMO.DBFile 'DMO的数据库数据文件对象
Global oLOGFile As SQLDMO.LogFile 'DMO的数据库日志文件对象
Global Const LoginTimeout As Long = 30 '登录超时(秒)
Global bConnectted As Boolean '数据服务器连接标记
Global Const sDBFileSuffix As String = "_Data" '数据库数据文件名后缀
Global Const sLogFileSuffix As String = "_Log" '数据库日志文件名后缀
Global Const sDBFileIniSize As Integer = 1 '数据库数据文件初始大小(单位:M)
Global Const sLogFileIniSize As Integer = 1 '数据库日志文件初始大小(单位:M)
Global Const sDBFileGrowthType As String = SQLDMOGrowth_Percent '数据库数据文件增长方式:按百分比
Global Const sLogFileGrowthType As String = SQLDMOGrowth_MB '数据库日志文件增长方式:按M字节为单位
Global Const sDBFileGrowthSize As Integer = 10 '数据库数据文件增长大小:10%
Global Const sLogFileGrowthSize As Integer = 1 '数据库日志文件增长大小:1M字节
Global Const sDBFileIsPrimary As Boolean = True '数据库数据文件创建于主程序组
Global Const sDBFileGroup As String = "PRIMARY" '数据库数据文件所在程序组名Global MyDatabase1 As SQLDMO.Database 'DMO的数据库对象
Global MyDatabase2 As SQLDMO.Database 'DMO的数据库对象
Global oUser As SQLDMO.User
Global oDatabaseRole As SQLDMO.DatabaseRole
Public Const messageError = "出错信息..."
Global oLogin As SQLDMO.login'************[ Functions ]********************************
#If Win32 Then
Public Declare Function WNetAddConnection& Lib "mpr.dll" Alias "WNetAddConnectionA" (ByVal lpszNetPath As String, ByVal lpszPassword As String, ByVal lpszLocalName As String)
'【返回值】
'Long,零表示成功。会设置GetLastError。如GetLastError是ERROR_EXTENDED_ERR
' OR,则可用WNetGetLastError取得额外的错误信息
'【参数表】
'lpszNetPath ---- String,要连接的网络名
'lpszPassword --- String,可选的一个密码。如为vbNullString,表示采用当前
' 用户的默认密码。如为一个空字串,则不用任何密码
'lpszLocalName -- String,资源的本地名称。(例如,F: 和 LPT1:)
#End If 'WIN32
'**********<<[ EOF ]>>***********************************'Public logname As String
'Public usname As String
'Public psword As String
Public path As String '用于传递安装路径
Public Const dbname1 As String = "epcmis"
Public Const dbname2 As String = "epcmis_login"
Public dbname(2) As String
Public sqlname As String
Public username As String
Public password As String
Public MyServer As New SQLDMO.SQLServer
Public MyDatabase As New SQLDMO.Database
Dim vN As Long, vm As Long, IsInit As Boolean
Dim vMs_Integer(29) As Integer, vYuan_Byte(255) As Integer
Public Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long '获取客户机主机名的api
Global oRegistry As SQLDMO.Registry 'DMO的注册表对象
Global oSqLServer As SQLDMO.SQLServer 'DMO的数据服务器对象
Global oDatabase As SQLDMO.Database 'DMO的数据库对象
Global oDBFile As SQLDMO.DBFile 'DMO的数据库数据文件对象
Global oLOGFile As SQLDMO.LogFile 'DMO的数据库日志文件对象
Global Const LoginTimeout As Long = 30 '登录超时(秒)
Global bConnectted As Boolean '数据服务器连接标记
Global Const sDBFileSuffix As String = "_Data" '数据库数据文件名后缀
Global Const sLogFileSuffix As String = "_Log" '数据库日志文件名后缀
Global Const sDBFileIniSize As Integer = 1 '数据库数据文件初始大小(单位:M)
Global Const sLogFileIniSize As Integer = 1 '数据库日志文件初始大小(单位:M)
Global Const sDBFileGrowthType As String = SQLDMOGrowth_Percent '数据库数据文件增长方式:按百分比
Global Const sLogFileGrowthType As String = SQLDMOGrowth_MB '数据库日志文件增长方式:按M字节为单位
Global Const sDBFileGrowthSize As Integer = 10 '数据库数据文件增长大小:10%
Global Const sLogFileGrowthSize As Integer = 1 '数据库日志文件增长大小:1M字节
Global Const sDBFileIsPrimary As Boolean = True '数据库数据文件创建于主程序组
Global Const sDBFileGroup As String = "PRIMARY" '数据库数据文件所在程序组名Global MyDatabase1 As SQLDMO.Database 'DMO的数据库对象
Global MyDatabase2 As SQLDMO.Database 'DMO的数据库对象
Global oUser As SQLDMO.User
Global oDatabaseRole As SQLDMO.DatabaseRole
Public Const messageError = "出错信息..."
Global oLogin As SQLDMO.login'************[ Functions ]********************************
#If Win32 Then
Public Declare Function WNetAddConnection& Lib "mpr.dll" Alias "WNetAddConnectionA" (ByVal lpszNetPath As String, ByVal lpszPassword As String, ByVal lpszLocalName As String)
'【返回值】
'Long,零表示成功。会设置GetLastError。如GetLastError是ERROR_EXTENDED_ERR
' OR,则可用WNetGetLastError取得额外的错误信息
'【参数表】
'lpszNetPath ---- String,要连接的网络名
'lpszPassword --- String,可选的一个密码。如为vbNullString,表示采用当前
' 用户的默认密码。如为一个空字串,则不用任何密码
'lpszLocalName -- String,资源的本地名称。(例如,F: 和 LPT1:)
#End If 'WIN32
'**********<<[ EOF ]>>***********************************'Public logname As String
'Public usname As String
'Public psword As String
Public path As String '用于传递安装路径
Public Const dbname1 As String = "epcmis"
Public Const dbname2 As String = "epcmis_login"
Public dbname(2) As String
Public sqlname As String
Public username As String
Public password As String
Public MyServer As New SQLDMO.SQLServer
Public MyDatabase As New SQLDMO.Database
Dim vN As Long, vm As Long, IsInit As Boolean
Dim vMs_Integer(29) As Integer, vYuan_Byte(255) As Integer
解决方案 »
- 对于这样一组datetime,如何求其最早的那行
- 求多表联合汇总的一句SQL语句
- 刚才回答“这句select怎么写,应该很简单的”再进来下
- 在一张表里挑选出想要的记录
- 数据库乱码问题,回贴就给分
- 求一SQL查询.
- 建不了表
- 各位:请问我在一个变量(clo)里存储了某个表student的字段名称(student_name),我通过变量clo 来取得字段student_name的值,SQL该怎么写
- 好多天都没有解决,sql server 2000不能产生sspi上下文
- 好多分数啊!熟悉sql server的同志们来抢啊!
- 请问怎么在SQL Server 中实现动态SQL呀。着急,马上接分
- 如何让数据库中的数据按照某一字段重新排序
Public Function FCreateDB(ByVal sDBName As String) As Boolean 'sDBName:新建数据库对象名
Dim sMDFFile, sLOGFile As String
Dim Source As String
Dim sSql1 As String
On Error GoTo Err_Message:
' creatdb.Label1.Caption = "正在安装数据库" & UCase(sDBName) & "请稍等……"
' creatdb.Label1.Visible = True
creatdb.MousePointer = vbHourglass
' Set MyServer = Nothing
' Set MyDatabase = Nothing
' MyServer.Connect sqlname, username, password 'connect to Server
Set oDatabase = CreateObject("SQLDMO.Database") '创建数据库对象
oDatabase.Name = sDBName '数据库对象命名
'创建复制 .MDF 文件
Set oDBFile = CreateObject("SQLDMO.DBFile") '创建数据库数据文件对象
oDBFile.Name = sDBName & sDBFileSuffix '数据库数据文件对象命名
Source = App.path & "\path" & oDBFile.Name & ".MDF"
sMDFFile = path & oDBFile.Name & ".MDF" '使用SQL Server注册的存储目录
oDBFile.PhysicalName = sMDFFile '数据库数据文件操作系统命名
' oDBFile.Size = sDBFileIniSize '设置数据库数据文件大小
' oDBFile.PrimaryFile = sDBFileIsPrimary '设置数据库数据文件文件组
' oDBFile.FileGrowthType = sDBFileGrowthType '设置数据库数据文件增长类型
' oDBFile.FileGrowth = sDBFileGrowthSize '设置数据库数据文件增长大小
' oDatabase.FileGroups(sDBFileGroup).DBFiles.Add oDBFile '将数据库数据文件加入数据文件组
FileCopy Source, sMDFFile
SetAttr sMDFFile, vbNormal
'创建复制 .LDF 文件
Set oLOGFile = CreateObject("SQLDMO.LogFile") '创建数据库日志文件对象
oLOGFile.Name = sDBName & sLogFileSuffix '数据库日志文件对象命名
Source = "f:\data\" & oLOGFile.Name & ".LDF"
' oLOGFile.Size = sLogFileIniSize '设置数据库日志文件大小
sLOGFile = path & oLOGFile.Name & ".LDF" '使用SQL Server注册的存储目录
oLOGFile.PhysicalName = sLOGFile '数据库日志文件操作系统命名
' oLOGFile.FileGrowthType = sLogFileGrowthType '设置数据库日志文件增长类型
' oLOGFile.FileGrowth = sLogFileGrowthSize '设置数据库日志文件增长大小
' oDatabase.TransactionLog.LogFiles.Add oLOGFile '将数据库日志文件加入日志文件组
FileCopy Source, sLOGFile
SetAttr sLOGFile, vbNormal
sSql1 = "sp_attach_db @dbname = N'" + sDBName + "'," + "@filename1 = N'" + sMDFFile + "'," + "@filename2 = N'" + sLOGFile + "'"
Set MyDatabase = MyServer.Databases("master")
MyDatabase.ExecuteImmediate sSql1
MyServer.Disconnect
' oSqLServer.Databases.Add oDatabase '将数据库对象加入数据服务器
FCreateDB = True '创建成功
Exit Function
Err_Message:
FCreateDB = False '创建失败
MsgBox Err.Source & " Error " & Err.Number & ":" & Err.Description '显示错误信息
End Function
Set MyDatabase = MyServer.Databases("pubs")
MyDatabase.ExecuteImmediate sSql1
如果想用sql-dmo.多研究一下VB的代码。在delphi中的调用方式很相似的。而且VB中有个object browser工具可以查资料,主要是能看出函数的原型,在Delphi中调用ole对象时,我都不知道去哪里查某个函数有几个参数,编译也不会提示出来的。只有运行后才知对不对,查看VB的Object Browser就方便多了。
:)