扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
太乱了,洒家建议好汉,先一条条试时运行。
十年的太谷网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整太谷建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“太谷网站设计”,“太谷网站推广”以来,每个客户项目都认真落实执行。
洒家不知表名,故而无法调试。
好汉,洒家可以程来助你。
你可以在存储过程中,继续调用xp_cmdshell来依次执行上面那些指令,也可以把那些指令生成一个.bat批处理文件保存在一个地方,然后在存储过程中用xp_cmdshell再执行这个批处理文件(比如批处理文件名是a.bat,保存在D盘:EXEC master..xp_cmdshell '"D:\a.bat"')就OK啦
传统方法用SQL Server作数据库后台时,一般采用手工的方式利用SQL Server自身提供的可视化工具或SQL语言进行数据的备份还原功能(余正涛等,2003),但是由于SQL Server 的复杂性,操作比较繁琐,就使得普通用户对数据的备份与还原有一定的困难,并且容易造成错误,可能造成数据丢失等灾难性的后果。考虑到系统完整性和可靠性,可在VB 6.0环境下实现SQL Server数据库的备份与还原工作。
(一)实现思路
为了通过程序实现数据库备份与还原工作,必须在VB环境下引用SQLDMO,SQLDMO(SQL Distributed Management Objects,SQL 分布式管理对象)封装了Microsoft SQL Server数据库中的对象。SQLDMO是Microsoft SQL Server中企业管理器所使用的应用程序接口(包括备份和恢复),允许用支持自动化或COM 的语言编写应用程序。SQLDMO 对象来自SQLDMO.dll,SQLDMO.dll 是随 SQL Server 2000 一起发布的。并通过CreateObject("SQLD MO.SQLServer")函数创建新对象,使用SQLServ er.Connect函数经密码校验可连接服务器,再创建备份核心对象SQLDMO.Backup,同时指定备份文件等参数即可实现数据库备份与还原。具体的备份处理流程如图8-10所示。
特别注意SQL Server 2000 所安装的硬盘分区格式是否是NTFS格式,NTFS是最适合安装SQL Serv⁃er的文件系统。它比FAT文件系统更稳定且更容易恢复。而且它还包括一些安全选项,例如文件和目录ACL,以及文件加密(EFS)。如果是Fat32格式建议将它改成NTFS格式,因为Fat32支持最大文件为4G,数据库超过4G通常会提示日志文件太大之类的错误。
图8-10 数据库备份处理流程图
(二)关键代码
'************数据库备份操作*************
Set gSQLServer=getSQLServer(ServerName,UserName,password)
Private Function BackUpData(gDatabaseName As String,gBkupRstrFileName As String,Server⁃Name As String,UserName As String,password As String)As String
On Error GoTo ErrHandler:
Dim oBackup As SQLDMO.Backup
Dim gSQLServer As SQLDMO.SQLServer
Set tprg=New CProgress
tprg.Title ="正在执行数据库备份......"
ServerName为服务器名称;serName为用户名;password为超级密码
'连接服务器
Set oBackup=New SQLDMO.Backup
Set oBackupEvent=oBackup
gDatabaseName为所要备份数据名称;gBkupRstrFileName为备份文件名
oBackup.Database=gDatabaseName
oBackup.Files=gBkupRstrFileName
已存在gBkupRstrFileName备份文件名,则覆盖
If Len(Dir(gBkupRstrFileName))>0 Then
Kill(gBkupRstrFileName)
End If
oBackup.PercentCompleteNotification=1
Screen.MousePointer=vbHourglass
oBackup.SQLBackup gSQLServer
DoEvents
Screen.MousePointer=vbDefault
'清空内存、关闭连接
Set oBackupEvent=Nothing
Set oBackup=Nothing
gSQLServer.Close
Set gSQLServer=Nothing
Set tprg=Nothing
Exit Function
ErrHandler:
m_str状态=Err.Description
Resume Next
Set tprg=Nothing
End Function
'************数据库还原操作*************
Private Function RestoreData(gDatabaseName As String,gBkupRstrFileName As String,Server⁃Name As String,UserName As String,password As String)As String
On Error GoTo ErrHandler:
Dim oRestore As SQLDMO.Restore
Dim msg As String
Dim Response As String
Set tprg=New CProgress
tprg.Title ="正在执行数据库还原......"
Dim gSQLServer As SQLDMO.SQLServer
'ServerName为服务器名称;serName为用户名;password为超级密码
'连接服务器
Set gSQLServer=getSQLServer(ServerName,UserName,password)
Set oRestore=New SQLDMO.Restore
Set oRestoreEvent=oRestore
'gDatabaseName为所要还原数据名称;gBkupRstrFileName为还原文件名
oRestore.Database=gDatabaseName
oRestore.Files=gBkupRstrFileName
Screen.MousePointer=vbHourglass
oRestore.PercentCompleteNotification=1
oRestore.SQLRestore gSQLServer
Screen.MousePointer=vbDefault
'清空内存、关闭连接
Set oRestoreEvent=Nothing
Set oRestore=Nothing
gSQLServer.Close
Set gSQLServer=Nothing
Set tprg=Nothing
Exit Function
ErrHandler:
m_str状态=Err.Description
Resume Next
Set tprg=Nothing
End Function
'************显示备份进度*************
'************显示还原进度*************
End Sub
Private Sub oBackupEvent_PercentComplete(ByVal Message As String,ByVal Percent As Long)
DoEvents
tprg.Value=Percent
End Sub
Private Sub oRestoreEvent_PercentComplete(ByVal Message As String,ByVal Percent As Long)
DoEvents
tprg.Value=Percent
java的啊?
错误提示给你了 :
在将 varchar 值 'sdfsgsf' 转换成数据类型 int 时失败。
"\"在C语言的作用忘记了?如果数据库存放位置是本机,建议使用127.0.0.1否则:如果是公网,则用域名,局域网则用IP最好是将连接字串写在非EXE里,这样方便发布和修改数据库服务器位置、帐号密码还有,vc中连通前,你应该在mssql管理器中尝试连接,如果在mssql管理器中都连接不能,则问题不出在VC中caseDATABASE_MSSQL:strcpy_s(data,"Driver={SQLServer};");strcat_s(data,"Server=");strcat_s(data,addr);if(addr[0]!='.')//如果服务器地址使用".",则不能加端口{strcat_s(data,",");strcat_s(data,port);}strcat_s(data,";");strcat_s(data,"UID=");strcat_s(data,user);strcat_s(data,";");strcat_s(data,"PWD=");strcat_s(data,pwd);strcat_s(data,";");if(strlen(database)){strcat_s(data,"Database=");strcat_s(data,database);strcat_s(data,";");}上面是连接字符串生成代码,下面是打开连接的函数intCAdoDataBase::Open(constchar*data){intret=0;memset(m_strLogin,0,1024);strcpy_s(m_strLogin,data);this-Lock();do{try{m_pConnection.CreateInstance(__uuidof(Connection));ret=m_pConnection-Open((_bstr_t)data,"","",adModeUnknown);m_bFlag=TRUE;ret=0;}catch(_com_errore){m_bFlag=FALSE;strcpy_s(m_strErrCode,e.Description());m_pConnection=NULL;ret=-1;}}while(FALSE);this-UnLock();returnret;}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流