1.我的程序是用sql server 2000 开发的,我想用msde来发布,不想在客户机器上运行企业管理器。不知如何自动安装工程,
我已经安装msde,并在VB中建立联接,运行,我在程序中建库,建表都是用osql来做的,而还原数据库没有实现只是用企业管理器中实现的。
2.我用osql /U"sa" /P"a" /Q"restore database test from disk='c:\tjdtt.dat'"
消息 170, 级别 15, 状态 1, 服务器 zh, 行 1
第 1 行:'/'附近有语法错误
谢谢,马上结贴
我已经安装msde,并在VB中建立联接,运行,我在程序中建库,建表都是用osql来做的,而还原数据库没有实现只是用企业管理器中实现的。
2.我用osql /U"sa" /P"a" /Q"restore database test from disk='c:\tjdtt.dat'"
消息 170, 级别 15, 状态 1, 服务器 zh, 行 1
第 1 行:'/'附近有语法错误
谢谢,马上结贴
解决方案 »
- 刚看了一篇编程规范的文章,说最好用四个空格代替 tab 字符,有何意义呢?
- 记事本里的矩阵怎么赋给一个数组?
- 能不能让Picture读取变量中的图形数据?
- 请教在VB中如何屏蔽“ctrl+p"与"ctrl+shift+s"
- 如何往window剪贴板上放置自己的非标准格式的对象?
- 用VB开发SYRIS门禁系统
- 树视图控件如何实现多选?
- LoadResString(index)??????????
- ado访问sqlserver2000问题
- 高分求一“计算器”程序源代码,VB或Delphi均可,快呀
- 菜鸟发问,关于setWindowsHookEx的问题
- VB控件效果怎么实现???????请教各位!!!!!!!!!!!!!!!
http://community.csdn.net/Expert/topic/3985/3985633.xml?temp=.9589197
输入: osql -U"sa" -P"a" -S"127.0.0.1"
1>create database tjdtt
2>go
1>restore database test from disk='c:\tjdtt.dat'
2>go
如果恢复时的文件目录不正确,使用:
通过执行下面的语句,可以看到备份文件中的逻辑文件名(LogicalName列值):
restore filelistonly from disk='c:\tjdtt.dat'然后通过带move选项的restore语句,将文件恢复到另外的目录
restore database test from disk='c:\tjdtt.dat' with move 'tjdtt_data' to 'c:\tjdtt_data.mdf',move 'tjdtt_log' to 'c:\tjdtt.ldf'
我的msde数据库在C:\Program Files\Microsoft SQL Server\MSSQL\Data
而我的分离的数据库文件放在c:\tjdtt_data.mdf,c:\tjdtt_log.ldf
而我用restore filelistonly from disk='c:\tjdtt.dat'
(LogicalName列值):D:\db_sql\mssql\data\tjdtt_data.mdf
这台机器上的D:\db_sql\mssql\data\tjdtt_data.mdf是不存在的,我开发的机器上才有
那我怎么还原呢。
还原的时候,除非使用move选项,否则sql一样帮你还原到D:\db_sql\mssql\data\,而该目录不存在,还原自然不成功.所以让你使用
restore filelistonly from disk='c:\tjdtt.dat'
看看逻辑文件名是什么(move选项使用逻辑文件名)
然后再对应的使用move选项将文件还原到正确的位置,即还原到:C:\Program Files\Microsoft SQL Server\MSSQL\Data
下面怎么说了半天不去做,反而扯什么文件呢?
'**模 块 名:frestoredatabase_a
'**描 述:恢复数据库,返回出错信息,正常恢复,返回""
'**调 用:frestoredatabase_a "备份文件名","数据库名"
'**参数说明:
'** sDataBasePath 恢复后的数据库存放目录
'** sBackupNumber 是从那个备份号恢复
'** sReplaceExist 指定是否覆盖已经存在的数据
'**说 明:引用Microsoft ActiveX Data Objects 2.x Library
'**创 建 人:邹建
'**日 期:2003年12月09日
'*************************************************************************
Public Function fRestoreDatabase_a(ByVal sBackUpfileName$ _
, ByVal sDataBaseName$ _
, Optional ByVal sDataBasePath$ = "" _
, Optional ByVal sBackupNumber& = 1 _
, Optional ByVal sReplaceExist As Boolean = False _
) As String
Dim iDb As ADODB.Connection, iRe As ADODB.Recordset
Dim iConcStr$, iSql$, iReturn$, iI&
On Error GoTo lbErr
'创建对象
Set iDb = New ADODB.Connection
Set iRe = New ADODB.Recordset
'连接数据库服务器,根据你的情况修改连接字符串
iConcStr = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Data Source=SQL服务器名"
iDb.Open iConcStr
'得到还原后的数据库存放目录,如果没有指定,存放到SQL SERVER的DATA目录
If sDataBasePath = "" Then
iSql = "select filename from master..sysfiles"
iRe.Open iSql, iDb, adOpenKeyset, adLockReadOnly
iSql = iRe(0)
iRe.Close
sDataBasePath = Left(iSql, InStrRev(iSql, "\"))
End If
'检查数据库是否存在
If sReplaceExist = False Then
iSql = "select 1 from master..sysdatabases where name='" & sDataBaseName & "'"
iRe.Open iSql, iDb, adOpenKeyset, adLockReadOnly
If iRe.EOF = False Then
iReturn = "数据库已经存在!"
iRe.Close
GoTo lbExit
End If
iRe.Close
End If
'关闭用户进程,防止其它用户正在使用数据库,导致数据恢复失败
iSql = "select spid from master..sysprocesses where dbid=db_id('" & sDataBaseName & "')"
iRe.Open iSql, iDb, adOpenKeyset, adLockReadOnly
While iRe.EOF = False
iSql = "kill " & iRe(0)
iDb.Execute iSql
iRe.MoveNext
Wend
iRe.Close
'获取数据库恢复信息
iSql = "restore filelistonly from disk='" & sBackUpfileName & "'" & vbCrLf & _
"with file=" & sBackupNumber
iRe.Open iSql, iDb, adOpenKeyset, adLockReadOnly
'生成数据库恢复语句
iSql = "restore database [" & sDataBaseName & "]" & vbCrLf & _
"from disk='" & sBackUpfileName & "'" & vbCrLf & _
"with file=" & sBackupNumber & vbCrLf
With iRe
While Not .EOF
iReturn = iRe("PhysicalName")
iI = InStrRev(iReturn, ".")
iReturn = IIf(iI = 0, "", Mid(iReturn, iI)) & "'"
iSql = iSql & ",move '" & iRe("LogicalName") & _
"' to '" & sDataBasePath & sDataBaseName & iReturn & vbCrLf
.MoveNext
Wend
.Close
End With
iSql = iSql & IIf(sReplaceExist, ",replace", "")
iDb.Execute iSql
iReturn = ""
GoTo lbExit
lbErr:
iReturn = Error
lbExit:
fRestoreDatabase_a = iReturn
End Function