• 从备份中恢复被用户误删的sharepoint 2003的Doc Library。


    在sharepoint 2003中因为没有回收功能,恢复被用户误删得文件相当麻烦。
    一般的途径是恢复sql2000的备份,重新安装一个sharepoint 2003,用一个偷梁换柱的办法(修改GUID)把新的sharepoint2003连接回sql2000的备份。然后取回文件。

    其实有一个更加简单办法。
    因为所有的文件均存放在docs表中,使用以下的代码就可以把文件取回本地

    string connectionString = @"Data Source=<SQL2000 Server Name>;Initial Catalog=<Database Name>;Integrated Security=True";
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();

                //This section is to obtain the total number of files
                //SQL query string: dirname = folder from which you would like to retrieve from
                //extension<>'' = must have extension = must be a file
                //size >0 = size of file must not be NULL
                SqlCommand cmd0 = new SqlCommand(@"select count(*) from docs where dirname like '%lrts/shared%' and extension <>'' and size >0 ", conn);
                SqlDataReader reader0 = cmd0.ExecuteReader();
                reader0.Read();
                string totalItems = reader0[0].ToString();
                reader0.Close();
                int itemNums = Int32.Parse(totalItems);

                //This section retrieves all the Id of the files and places them in a ArrayList
                SqlCommand cmd1 = new SqlCommand(@"select Id, DirName, LeafName, Size from docs where dirname like '%<DocLib Path>%' and extension <>'' and size >0 ", conn);
                SqlDataReader reader1 = cmd1.ExecuteReader();
                ArrayList allID = new ArrayList();

                for (int i = 0; i < itemNums; i++)
                {
                    reader1.Read();

                    string IDNumber = reader1["Id"].ToString();
                    allID.Add(IDNumber);
                }
                reader1.Close();

                //This section retrieves all files
                for (int i = 0; i < itemNums; i++)
                {
                    string IDNumber = (string)allID[i];     //getting Id

                    SqlCommand cmd = new SqlCommand(@"select Id, DirName, LeafName, Size, Content from docs where dirname like '%lrts/shared%' and extension <>''  and size >0 and Id='" + IDNumber + "'", conn);

                    SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleRow);

                    if (reader.HasRows)
                    {
                        reader.Read();

                        //set the content length to the stored content length in the DB
                        String ContentLength = reader["Size"].ToString();

                        String dirName = reader["DirName"].ToString();

                        //creating directory structure from dirName
                        Directory.CreateDirectory(@"C:\retrieve docs\" + dirName);

                        //place the file in this dir
                        string pathName = @"C:\retrieve docs\" + dirName + @"\";

                        //getting the filename
                        String fileName = reader["LeafName"].ToString();

                        //read out the binary data from the db
                        byte[] data = reader["Content"] as byte[];

                        MemoryStream memstream = new MemoryStream();

                        memstream.Write(data, 0, Int32.Parse(ContentLength));

                        byte[] byteArray = memstream.ToArray();

                        memstream.Flush();
                        memstream.Close();

                        FileStream fs = File.Create(pathName + fileName);
                        BinaryWriter bw = new BinaryWriter(fs);

                        bw.Write(byteArray);
                        bw.Close();
                        fs.Close();

                        reader.Close();

     

                    }
                }
            }


    这个方法很快就拿到了文件,当然,用户的权限就没有办法取回了。

  • 相关阅读:
    C#快速生成数据数组
    PHP访问Oracle数据库
    C# 监听HTTP请求
    三维重建基础
    三维重建技术概述
    python+OpenCV 特征点检测
    windows10,redhat6.5下python3.5.2使用cx_Oracle链接oracle
    《读书报告 -- Elasticsearch入门 》-- 安装以及简单使用(1)
    2016年简直一晃而过
    windows下python3.5使用pip离线安装whl包
  • 原文地址:https://www.cnblogs.com/by1455/p/1032419.html
Copyright © 2020-2023  润新知