客户机装有一套asp.net+c#+sql2000开发的系统。数据库名A,现因系统功能增加,A中原有的所有表中的字段不变,但在某些表增加了N个字段。
由于系统已运行了一段时间,A中包含不少数据。
现想通过程序(asp.net+c#)实现数据库A的更新,并保留数据库A中的原有数据。(
   限制条件:无法远程登录客户机更新系统
             技术支持不到现场
 )请问一下,该如何更新呢?
麻烦各位给个思路或代码
谢谢!

解决方案 »

  1.   

    如果可以上传asp.net页面就可以做了
      

  2.   

    yangqidong , 你好能给个思路吗?(现在是想更新数据库中表的结构,并保留数据库中原有的数据)
      

  3.   

    当然可以ALTER TABLE [...] ADD [..] ..
      

  4.   

    请问给了远程计算机的IP,开放端口和数据库的用户名和密码吗?假如有的话,就直接在本地的计算机上操作就可以了,你参考一下下面的代码!
    不同服务器数据库之间的数据操作 --创建链接服务器 
    exec sp_addlinkedserver  'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' 
    exec sp_addlinkedsrvlogin  'ITSV ', 'false ',null, '用户名 ', '密码 ' --查询示例 
    select * from ITSV.数据库名.dbo.表名 --导入示例 
    select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器 
    exec sp_dropserver  'ITSV ', 'droplogins ' --连接远程/局域网数据(openrowset/openquery/opendatasource) 
    --1、openrowset --查询示例 
    select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --生成本地表 
    select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --把本地表导入远程表 
    insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) 
    select *from 本地表 --更新本地表 
    update b 
    set b.列A=a.列A 
    from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b 
    on a.column1=b.column1 --openquery用法需要创建一个连接 --首先创建一个连接创建链接服务器 
    exec sp_addlinkedserver  'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' 
    --查询 
    select * 
    FROM openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ') 
    --把本地表导入远程表 
    insert openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ') 
    select * from 本地表 
    --更新本地表 
    update b 
    set b.列B=a.列B 
    FROM openquery(ITSV,  'SELECT * FROM 数据库.dbo.表名 ') as a  
    inner join 本地表 b on a.列A=b.列A --3、opendatasource/openrowset 
    SELECT  * 
    FROM  opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta 
    --把本地表导入远程表 
    insert opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名 
    select * from 本地表  
      

  5.   

    无法远程登录客户机更新系统
    --
    这是什么意思,sqlserver上的去吗
    sqlserver上的去就直接备份更新就行
    要是上不去,用ado来执行你写好的sql(慢)
      

  6.   


    为什么不行?我在之前的公司就可以啊,我在我电脑上把局域网另外一台里的数据操作到外网服务器的数据库里就可以了比如远程的A,ip是202.103.13.56端口:3168,,用户名,ad,密码:123
    局域网内B,pc的Ip是:192.168.1.5,端口是1433(默认)用户名:sa,密码空
    ,然后我在自己电脑的查询分析器中exec sp_addlinkedserver  'A', ' ', 'SQLOLEDB ', '202.103.13.56:3168' 
    exec sp_addlinkedsrvlogin  'ITSV ', 'false ',null, 'ad', '123'exec sp_addlinkedserver  'B', ' ', 'SQLOLEDB ', 192.168.1.5:1433' 
    exec sp_addlinkedsrvlogin  'ITSV ', 'false ',null, 'sa', ''
    ---然后
    select * from A.dbo.Tab as aa join B.dbo.Tabe as bb on aa.id=bb.id
     
    其他的例子就不用举了
      

  7.   

    不好意思,写错了,嘿嘿exec sp_addlinkedserver  'A', ' ', 'SQLOLEDB ', '202.103.13.56:3168' 
    exec sp_addlinkedsrvlogin  'A', 'false ',null, 'ad', '123'exec sp_addlinkedserver  'B', ' ', 'SQLOLEDB ', '192.168.1.5:1433' 
    exec sp_addlinkedsrvlogin  'B', 'false ',null, 'sa', ''
      

  8.   

    谢谢各位!已解决,方法比较笨,效率比较低 ,如下,请各位指正一下。1、首先通过sql2000-->所有任务-->生成sql脚本-->全部显示,然后选择全部选项-->然后导出成txt文件。2、获取旧版数据库A中所有表的所有数据,并以表名一一存储为xml文件.3、删除旧版数据库A4、根据txt文件中的脚本(自己在写一些脚本如:CREATE DATABASE [数据库名]...exec sp_dboption N'数据库名', N'autoclose', N'false' ...等),新建同名新版数据库A(新建的数据库A,包含了新添加的表,表中新添加的字段,及新的存储过程等)5、将xml文件中的数据根据表名,插入到相应的表中。6、删除生成的xml文件7、结束
      

  9.   

    select * from table for xml 就可以生成XML
      

  10.   

    执行查询:
    ALTER TABLE 表名 ADD 新列名 .....
    百度一下用法就可以了。。