我的系统目前的问题在于: 我虽然关闭了程序到SQL SERVER 2000的连接,可是在SQL SERVER上的数据库并没有关闭,也许是可以用存储过程来完成,可是我该将相应控件的数据源如何设定,以及在重新定位到SQL SERVER的新数据库以后如何实时更新呢?此其一。 在客户端使用存储过程来关闭服务器上的数据库权限够吗?此其二。 当我创建了连接字符串,使用ADO连接到服务器之后,服务器会将数据库加载到当前内存,在程序关闭之前,我试过,根本关不掉数据库文件。此其三。 感谢nononono老兄的帮忙,但可惜的是一点作用也没有。 斑竹大哥,Where are you? Can you help me? Thanks before! BTW:我的程序前台用VB6.0开发。
这段代码会告诉你: Dim strCnn As String Dim rs As ADODB.Recordset Dim cnn1 As ADODB.Connection Set cnn1 = New ADODB.Connection Set rs = New ADODB.Recordset cnn1.ConnectionString = "driver={SQL Server};server=?;uid=sa;pwd=?" cnn1.Open strCnn cnn1.DefaultDatabase = "mydb" rs.Open "select * from dpt", cnn1 rs.Close // 一定要关闭所有与mydb连接打开的游标 cnn1.DefaultDatabase = "master" // 改变默认数据库
我虽然关闭了程序到SQL SERVER 2000的连接,可是在SQL SERVER上的数据库并没有关闭,也许是可以用存储过程来完成,可是我该将相应控件的数据源如何设定,以及在重新定位到SQL SERVER的新数据库以后如何实时更新呢?此其一。
在客户端使用存储过程来关闭服务器上的数据库权限够吗?此其二。
当我创建了连接字符串,使用ADO连接到服务器之后,服务器会将数据库加载到当前内存,在程序关闭之前,我试过,根本关不掉数据库文件。此其三。 感谢nononono老兄的帮忙,但可惜的是一点作用也没有。 斑竹大哥,Where are you? Can you help me? Thanks before! BTW:我的程序前台用VB6.0开发。
第一步:附加数据库;
第二步:设定ADO连接,打开刚刚附加的数据库;
第三步:关闭连接,设定连接字符串为NOTHING;
第四步:分离数据库。依然出错。
如果没有2、3两步,则分离成功。
所以在2、3之后需要加一步,关闭服务器上的数据库文件。或者:如果不是使用这种方案,我的程序应该如何进行设计?
也没有办法,SQL SERVER 2000 刚刚才增加了这个功能,所以连找一个好的例程都没有。
Dim rs As ADODB.Recordset
Dim cnn1 As ADODB.Connection
Set cnn1 = New ADODB.Connection
Set rs = New ADODB.Recordset cnn1.ConnectionString = "driver={SQL Server};server=?;uid=sa;pwd=?"
cnn1.Open strCnn cnn1.DefaultDatabase = "mydb"
rs.Open "select * from dpt", cnn1
rs.Close // 一定要关闭所有与mydb连接打开的游标 cnn1.DefaultDatabase = "master" // 改变默认数据库
cnn1.Execute "sp_detach_db mydb" //分离数据库 cnn1.Close
另:如果你用了数据环境,请关闭它打开的连接 (DataEnvironment1.Connection1.close)
我昨天下午已经试验了一下,结果是发现:
虽然我的程序已经关闭了ADO连接,但是我在企业管理器里发现,SQL SERVER 2000并没有释放连接,而是足足等了35秒才更新,连接才被释放。
我是后来在程序中用DO WHILE 循环,监测当前的系统时间的变化,写入一个字符串变量后显示在状态栏上才得到35秒这个信息的。
老天,是不是太久了。
同时发现,原来我原来的程序没有错,只是没有给她等待的时间,用这个“她”是因为程序就象女人一样,剥去外壳,就任你摆布了。;-)
拜托,再帮一个忙。
在企业管理器里选择分离时,系统提示有一个连接,同时可以立刻关闭连接,这个过程在SQL SERVER 2000 中如何实现,我查阅了2000的帮助手册,可是不知道哪一个才是。
一定加分的,并且希望留一个联系方式,我的Email:[email protected],希望以后可以经常互相探讨,我的专家分也增加的挺快的。就是 @^@ 不雅。
也谢谢其他参与的朋友,一并有分,不要嫌少哦。
用DMO实现也很简单先加入SQLDMO引用,然后Dim MYSqlServer As New SQLDMO.SQLServerSet MYSqlServer = CreateObject("SQLDMO.sqlserver")MYSqlServer.Connect "服务器名", "sa", "口令"MYSqlServer.DetachDB "mydb"set MYSqlServer=Nothing
我是指程序中关闭连接字符串以后,服务器等了35秒才真正关闭了使用的数据库。
总之,先加分了,大家收好。