使用SQL直接从sps数据库中恢复文档

客户误删项目站点,其中有大量文档需恢复。因站点构建在SPS下且数据库大,将前天数据库备份恢复到另一服务器。尝试重新架设门户遇问题,于是通过SQL直接从库中恢复文档,还给出了恢复文档的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

我的一个客户误删除了一个项目站点,其中有大量的文档需要恢复。由于,这个站点构建在他的SPS之下,而他们的sps数据库非常大,我费了一天的时间将他前天的数据库备份恢复到另一个数据库服务器上。我在试图重新架设一个同样的门户时遇到了一些问题,于是,我想,是否通过sql直接送库中恢复文档来得更加直接

sps的文档都存放在***_SITE数据库的docs表中,表中dirname字段存放了站点的URL后边的部分,leafname则存放的是文件或文件夹的名称,content中存放的是文件的内容,type中标识了该条目是文件还是文件夹(0表示是文件,1表示是文件夹),于是,我编写了一段代码对这个文档库下的文档进行恢复:

        string strFilesID="";

int nCount=0;

 

System.Data.SqlClient.SqlCommand myCmm=new SqlCommand();

myCmm.Connection=sqlConnection2;

myCmm.CommandText="select dirname,leafname,content from docs where dirname like '%%projectserver_120/doclib%%' and type='0'";

myCmm.Connection.Open();

 

System.Data.SqlClient.SqlDataReader myReader;

byte[] MyData=new byte [0];

try

{

myReader=myCmm.ExecuteReader();

while (myReader.Read() )

{

nCount=nCount+1;

 

string strFileName="";

string strFolderId="";

//

string strFolderName="dev";

string strPath=@"d:/guangzhou/";

//

strPath=@"h:/test/";

strFileName=myReader.GetString(1);

 

{

strFolderId=myReader.GetString(0).ToString();

strFilesID=strFolderId;

//

strFolderName=strFolderName+strFolderId;

//

strPath=strPath+strFolderName;

strPath=strPath + strFolderId;

Directory.CreateDirectory(strPath);

strPath=strPath+@"/"+strFileName;

MyData=(byte[])myReader.GetValue(2);

int ArraySize=new int();

ArraySize=MyData.GetUpperBound(0);

if (ArraySize>=0)

{

FileStream fs=new FileStream(@strPath,@FileMode.OpenOrCreate,FileAccess.Write);

fs.Write(MyData,0,ArraySize);

fs.Close();

}

else

{

//eventLog1.WriteEntry ();

string strMyLogName="BatUploadApp";

if (!EventLog.SourceExists("BatUpload") )

{

EventLog.CreateEventSource("BatUpload",strMyLogName);

 

}

else

{

strMyLogName=EventLog.LogNameFromSourceName("BatUpload",".");

}

 

eventLog1.Source="BatUpload";

eventLog1.Log =strMyLogName;

eventLog1.WriteEntry(strFilesID,EventLogEntryType.Information);

 

}

}

 

}

 

MessageBox.Show(nCount.ToString());

 

}

catch(Exception ex)

{

MessageBox.Show(strFilesID +":" + ex.Message);

}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想好点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值