rsd文件是什么文件?怎么创建和编辑?

common_man 2003-12-01 03:27:42
最近在研究一个试用版软件,发现它的数据都存在一个后缀为rsd的文件中,用Access2000打开该文件,会提示该文件是由老版本的Access创建的,如果直接打开,则不能编辑,也可以选择转换成mdb文件,感觉很奇怪。我用Access97打开这个文件也是同样的结果,不知道是什么原因?请问大家这是为什么?谢谢!
...全文
1772 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
common_man 2003-12-01
  • 打赏
  • 举报
回复
谢谢楼上,这个我也在google中搜到了,好像讲的不是同一个东西吧?^_^
该软件不用Sql server也可以运行,而且新建一个工程就会新建一个rsd文件,速度很快,我想没这么麻烦吧,^_^,期待救世主的出现吧555555555
yintongshun 2003-12-01
  • 打赏
  • 举报
回复

http://www.soho-works.net/BLOG/135.asp

只可惜不是VC的
ObjectSpaces - 自动生成 RSD 文件
手动创建rsd 文件是个痛苦的过程,我们可以使用smo来自动生成这个过程。
smo 全称是SQL Server Management Objects (SMO),基于.net环境,而早先的 (sql-dmo,SQL Distributed Management Objects )则是基于com环境。

我写了一个简单过程BuildRSD,该过程需要提供sql server实例名和数据库名,返回包含rsd内容的字符串

调用非常简单
textBox1.Text=BuildRSD(txtServerInstance.Text,txtDatabase.Text);




感觉:


smo 太慢,以致没有测试的必要,像这个一个小的数据库的遍历,竟然用了近10分钟。我的机器是赛杨433的,这也使我下了决心,订购了一个赛杨p4 1.7G的准系统(可能需要一个星期后才能到货)。整个运行过程中,sqlservr.exe 进程始终占用100% cpu 。

占用内存
整个过程运行结束后,sqlservr.exe 用去几十Mb内存。

整个过程非常不解,为何这样的操作会占用这样长的cpu时间和内存。另外 Table,Column,Database等对象均未实现IDisposable 接口,资源如何释放(=null?)

附:过程全部

/// <summary>
/// 生成指定数据库的rds 文件内容
/// </summary>
/// <param name="serverInstance">sql server实例名</param>
/// <param name="dataBase">数据库名</param>
/// <returns>string, rds 文件内容</returns>
private string BuildRSD(string serverInstance,string dataBase)
{

StringBuilder sb=new StringBuilder();
Server oServer=new Server();
ServerConnection oServerConnection=oServer.ConnectionContext;
oServerConnection.ServerInstance=serverInstance;
oServerConnection.Connect();

Database db=oServer.Databases[dataBase];
sb.Append("<rsd:Database Name=\""+db.Name+"\" Owner=\"" + db.Owner+"\" xmlns:rsd=\"http://schemas.microsoft.com/data/2002/09/28/rsd\">\r\n");

sb.Append("\t<r:Schema Name=\""+db.UserName+"\" xmlns:r=\"http://schemas.microsoft.com/data/2002/09/28/rsd\">\r\n");




sb.Append("\t\t<rsd:Tables>\r\n");

foreach(Table t in db.Tables)
{
if (! t.IsSystemObject)
{
sb.Append("\t\t\t<rsd:Table Name=\""+t.Name+"\">\r\n");
sb.Append("\t\t\t\t<rsd:Columns>\r\n");

foreach(Column c in t.Columns)
{
sb.Append("\t\t\t\t\t<rsd:Column Name='"+c.Name+"' DataType='"+c.DataType+"' Precision='"+c.Length+"'");
if (c.Nullable)
{
sb.Append(" AllowDBNull='true'");
}
sb.Append("/>\r\n");



}
sb.Append("\t\t\t\t</rsd:Columns>\r\n");
sb.Append ("\t\t\t\t<rsd:Constraints>\r\n");



foreach(Index i in t.Indexes)
{
if (i.IndexKeyType==IndexKeyType.DriPrimaryKey)
{
sb.Append ("\t\t\t\t\t<rsd:PrimaryKey Name=\""+i.Name+"\">\r\n");
foreach(IndexedColumn ic in i.IndexedColumns)
{
sb.Append("\t\t\t\t\t\t<rsd:ColumnRef Name=\""+ic.Name+"\"/>\r\n");

}
sb.Append("\t\t\t\t\t</rsd:PrimaryKey>\r\n");


}
}
sb.Append("\t\t\t\t</rsd:Constraints>\r\n");
sb.Append("\t\t\t</rsd:Table>\r\n");
}
}
sb.Append("\t\t</rsd:Tables>");
sb.Append("\t</r:Schema>");
sb.Append("</rsd:Database>");
oServerConnection.Disconnect();
oServerConnection=null;
oServer=null;
return sb.ToString();

}




posted on 2003-8-29 19:09:07
Comments
Reader Comments

标题: re: ObjectSpaces - 自动生成 RSD 文件
名字: jjx
发表时间: 2003-9-1 2:36:57
这个,你有空可以试试。看看是否是我机器配置上的原因
跟踪一下代码,可以预见到的是第一次获取(Tables,Columns,Indexes等)集合时会慢些(Delayed Loading模式),需要好几秒(可能同机器配置有关)
但真正致命的造成的是
sb.Append("\t\t\t\t\t<rsd:Column Name='"+c.Name+"' DataType='"+c.DataType+"' Precision='"+c.Length+"'");
这句,每次执行都花去好几秒,几百个字段,结果可想而知

跟踪一下一个属性 如DataType
Column 对象DataType 属性
public string DataType
{
get
{
return base.Properties["DataType"].Value is String;
}

set
{
base.Properties.Get("DataType").Value = value;
}
}

所有的smo对象都继承自SqlSmoObject对象
internal PropertyCollection properties;

public PropertyCollection Properties
{
get
{
CheckObjectState(false);
if (properties == null)
{
GetServerObject().InitializeMetadata(this);
}
return properties;
}
}

问题很显然,properties变量也是Delayed Loading模式,每次都要好几秒

根本的,需要提高集合装载的速度,到毫秒级才行
common_man 2003-12-01
  • 打赏
  • 举报
回复
我研究了一下,编了个小例子,结果如下:
采用编程的方式,在程序中直接对rsd文件进行读写
1。在代码中直接连接rsd文件成功,并可以进行读的操作(如SELECT语句)。
2。代码中的写操作(如UPDATE语句)则失败,同样的SQL语句,对于转换过来的mdb文件则有效。
感觉这个文件应该是该软件的专有文件,其中做了一些“手脚”,^_^
另注:
这个软件是一个安全分析软件,全名Risk Spectrum Professional,核电站一般都用它,奇贵,听说一个拷贝要九万美元,哪位兄弟研究过它?有点内幕消息最好,^_^,谢了!
common_man 2003-12-01
  • 打赏
  • 举报
回复
谢谢楼上!这半年要忙死,哎!谁不想闲一点啊,^_^
丁淇石头 2003-12-01
  • 打赏
  • 举报
回复
只能连续三个恢复,不能再UP了吧?呵呵。最近很少见楼主啊。

这种文件我也是第一次听说,你看看这儿是否有用?http://www.soho-works.net/BLOG/135.asp

继续UP。
common_man 2003-12-01
  • 打赏
  • 举报
回复
up
common_man 2003-12-01
  • 打赏
  • 举报
回复
up
common_man 2003-12-01
  • 打赏
  • 举报
回复
up

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧