Burnett

淡定,执着......
posts - 29, comments - 99, trackbacks - 13, articles - 11
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

SharePoint站点迁移解决方案

Posted on 2007-02-28 14:49 Burnett 阅读(1606) 评论(15)  编辑 收藏 所属分类: SharePoint研究
  最近工程进展顺利,需要从测试服务器搬迁到正式服务器上进行最后测试。测试服务器上的一个Web应用程序已经具有了正式版本的体貌特征,所以本着“码为己用”的原则,以备份还原的方式迁移此应用程序到正式服务器上应用。但是在管理中心的备份还原功能中,实在难以搞定很简单的备份操作,所以Google了一下,做一个工作总结。

 

工作进行之前,先说明几点要准备的实现方法和技术背景。使用Stsadm命令来备份文件。还原再按这设定的操作执行一遍即可。
1)STSADM .exe文件。在 Windows SharePoint Services 2.0 中,默认情况下它在 c:\program files\common files\microsoft shared\web server extensions\60\bin。版本 3.0 的默认位置是 c:\program files\common files\microsoft shared\web server extensions\12\bin。这是一个强大的命令行
管理工具,几乎涵盖了所有MOSS的日常维护操作。具体参见SharePoint强大的命令行管理功能(中文)  。我使用的这个东东主要是为了备份站点数据。
2)SharePoint Designer 2007。这个东东是配合SharePoint来设计站点的。相信大家都熟悉FrontPage吧,这个软件是用来代替它的。SPD2007的备份介绍请看备份、还原或移动SharePoint站点
下面,开始我们的备份SharePoint的旅程。

 

第一种方式:使用命令行的方式来完整备份站点集或者站点

  • 首先我们使用STSADM.exe文件备份数据库文件。
    Stsadm -o backup -url http://localhost:18072 -filename d:\sps-backup-2007-2-28.bak

    注意,如果你要达到在任意目录下都可以使用stsadm命令,那么必须把这个文件所在的目录加入环境变量的“Path”中。我们已经完成了SharePoint网站中的所有的数据备份,包括页面、列表、webpart,甚至是包含在站点目录下的任意文件都会被打包进来。
     
  • 然后将文件拷贝到sps-backup-2007-2-28.bak这个文件拷贝到目标机器的任意一个目录,执行
    Stsadm -o restore-url http://localhost:8080 -filename d:\sps-backup-2007-2-28.bak
    如果目标位置存在一个站点集,必须先删去,或者增加一个参数-overwrite且次站点集处在停用状态,否则会有异常
    这是存在站点集的情况。OK,你说指定-overwrite参数咱们就增加了一个-overwrite参数,然后执行,可是还是出现错误:-(

    这是因为站点集作为Web应用程序正在使用的原因,如果我们联想到如果我们在听一个mp3的时候试图删除它的就会报错,那么这个问题就很好理解了,关掉IIS,再重新restore一下,OK,操作成功完成!
  • 有时候我们并不像备份整个站点集,只想备份站点集下的某一个网站,那么可以把backuprestore改成importexport,url设置成源网站的URL就可以了。

第二种方式:使用SharePoint2007完整备份站点集或者网站

  • 在SPD2007中,有两种方式的备份,一种只备份物理文件,一种是完整备份。
    这是只备份物理文件的情形,产生文件的扩展名应该是fwp:
    1)

    2)

    3)以下是还原网站的截图:

  • 以下是使用SPD2007完整备份的情形,产生文件的扩展名应该是cmp:
    1)


    2)


    3)这是还原网站的截图

总结:备份SharePoint的方式有很多种,还有更原始的直接备份数据库和拷贝物理文件,呵呵,有时候这些操作要比以上介绍的更灵活一些,如果你有更好的方法,希望不吝赐教~~~

Feedback

#1楼    回复  引用    

2007-03-03 09:13 by healingo [未注册用户]
我想问一下: 我在测试机器上没有加入服务器的域,而是用自己新建的域,
这样是不是站点迁移 会有问题

#2楼 [楼主]   回复  引用  查看    

2007-03-03 12:14 by Burnett      
@healingo:我的测试服务器上是加入了域服务器的。但是根据你的问题,使用上边的方法只是迁移了SharePoint层上的用户分组,如果迁移到另外一个域里再次使用原有域的用户名密码登录,应该会出现问题,这里的迁移是指同域下的迁移。如果你非要使用不同域下的迁移,那么你可以先使用Membership Provider来代替AD认证,这样就脱离了AD的限制。可以在迁移之前参考一下kaneboy的这篇文章,
http://blog.joycode.com/kaneboy/archive/2007/01/19/91901.aspx

#3楼    回复  引用    

2007-03-07 22:16 by 0#0000 [未注册用户]
网站不能恢复 如何把SQL中的数据导出来!

#4楼    回复  引用    

2007-03-08 11:52 by Steven [未注册用户]
跨域遷移確實是存在問題,我已驗證過了,遷移不成功,希望高手指點!
備份源機器域名:sipd
還原目標機器域名:sidc
將源機器的80端口的網站用sysadm備份后,命令為:Stsadm -o backup -url http://pmdc:80 -filename d:\sps-backup-2007-2-28.bak -overwrite
然後將其還原到目標機器的80端口的網站上,用的命令為:Stsadm -o restore-url http://pms:80 -filename d:\sps-backup-2007-2-28.bak -overwrite,備份還原都有成功,但登錄確是個問題。
我用sidc\administrator賬號登錄到還原后的網站上是成功的,但用其他賬號卻無法登錄,進SQL數據庫察看userinfo表的用戶信息,發現賬戶還是備份源機器裏的賬號信息,修改賬號如:sipd\steven該為sidc\steven,且sidc\steven在目標機器AD中有建立,但還是無法登錄,請高手幫幫忙,指出問題出在哪,謝謝!

#5楼 [楼主]   回复  引用  查看    

2007-03-08 12:21 by Burnett      
@Steven :
你看看sidc\steven用户加入SPSUsers用户组没有?

#6楼    回复  引用    

2007-03-08 23:09 by Steven [未注册用户]
您的意思是要用管理员账号将sidc\steven再加入一次网站成员或参与者是吧?
我是用管理员账号将sidc\steven再加了一次,将其加入网站成员,
该账号是可以登入系统了,可问题又出现了,那就是权限和流程都要重新配制
是不是用该命令备份还原后,特别是跨域备份还原后,权限及设置的流程都会丢失是吧?急盼你的回复,谢谢!

#7楼 [楼主]   回复  引用  查看    

2007-03-09 10:23 by Burnett      
@Steven:
我没有做过跨域的SPS迁移,同域下的迁移是不会有问题的,包括权限在内都可以正常转移,如果是要跨域的话,最好先用ADSI将域用户导出来放到一个单独的数据库中,然后SPS改成单点登录,不要使用域。

#8楼    回复  引用    

2007-03-09 16:47 by Steven [未注册用户]
非常感謝版主的熱情解答!:)
如果是真的沒有辦法了,那我也只能夠去重新配置流程和設定權限了!
不過還是非常感謝您!
Sharepoint2007的單點登錄也是目前我們這個項目需解決的一個問題,但卻沒有找到好的資料,最終還是沒有配置完成。看了MOSS SDK及其範例,雲裏霧裏,故特請版主寫一個詳細的SOP,並附上源代碼,我好好參照下,謝謝!您也可以將SOP及源代碼發到我郵箱(stevenfox@163.com),我也好想在MSN上跟您好好交流下,請加我(Steven-fox@msn.com),謝謝!

#9楼 [楼主]   回复  引用  查看    

2007-03-09 20:03 by Burnett      
@Steven
呵呵,没有帮你解决什么问题,只有推荐你几位在SPS里举足轻重的几位高手的blog,希望对你有点帮助
http://www.cnblogs.com/lizhimin
http://blog.joycode.com/kaneboy/
http://sunmoonfire.cnblogs.com/
http://www.cnblogs.com/xiaoshatian
尤其是kaneboy的博客里有你需要的单点登录的资料。

#10楼    回复  引用    

2007-03-14 08:52 by Steven [未注册用户]
版主是否能夠幫忙寫一個MOSS SSO詳細的SOP,並附上源代碼,我好好參照下,謝謝!

#11楼 [楼主]   回复  引用  查看    

2007-03-14 09:16 by Burnett      
@Steven
你好,非常荣幸你能关注我的blog,只是最近忙于研究公司的设计任务,SOP暂时无法帮你写了,不过kaneboy写了一篇用txt文件作数据源然后通过MemberShip Provider来实现SSO的文章,你可以看看
http://blog.joycode.com/kaneboy/archive/2007/01/19/91901.aspx

如果不行,我会抽空写一篇的,祝你好运:)

#12楼    回复  引用    

2007-03-16 22:44 by Steven [未注册用户]
版主:
您好!
请幫忙抽空寫一個MOSS SSO詳細的SOP,並附上源代碼,我好好參照下,謝謝!

#13楼    回复  引用    

2007-03-19 11:06 by Steven [未注册用户]
版主:
您好!
因項目急需單點登錄此功能,请幫忙抽空寫一個MOSS SSO詳細的SOP,並附上源代碼,我好好參照下,謝謝!

#14楼 [楼主]   回复  引用  查看    

2007-03-20 08:47 by Burnett      
@Steven
不是我不想写啊,只是我实在是腾不出时间,笑煞天写了一篇表单认证的文章,已经很详细了,你可以看看,如果什么地方不懂可以问问他,或者我帮你看看都可以,要写一篇文章要构思很长时间的,我也不想随便写一篇来草草地应付你。希望你可以谅解:)
笑煞天的表单认证:
http://www.cnblogs.com/xiaoshatian/archive/2007/03/14/674722.html
kaneboy的用户自定义管理模块:
http://blog.joycode.com/kaneboy/archive/2007/01/19/91901.aspx

#15楼    回复  引用    

2007-03-20 12:13 by Steven [未注册用户]
版主:
非常感謝您這麽熱情!這是我找的代碼,麻煩幫忙指點下怎麽將我需整合的網站的URL(http://sidcess.eoxconn.com/)加入其中,謝謝!我是用ASP.net應用程式(SsoToCMMI.aspx)去調用以下程式(SsoToCMMI.aspx.cs):
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.SharePoint.Portal;
using Microsoft.SharePoint.Portal.SingleSignon;

namespace FormSSO
{
public partial class SsoToCMMI : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
IntPtr pUserName = IntPtr.Zero;
IntPtr pPassword = IntPtr.Zero;
try
{
ISsoProvider isso = SsoProviderFactory.GetSsoProvider();
SsoCredentials myCreds = isso.GetCredentials("FormSSO");
pUserName = System.Runtime.InteropServices.Marshal.SecureStringToBSTR(myCreds.UserName);
String userName = System.Runtime.InteropServices.Marshal.PtrToStringBSTR(pUserName);
pPassword = System.Runtime.InteropServices.Marshal.SecureStringToBSTR(myCreds.Password);
String Password = System.Runtime.InteropServices.Marshal.PtrToStringBSTR(pPassword);

}
catch (SingleSignonCredsNotFoundException ssoe)
{
if (SSOReturnCodes.SSO_E_CREDS_NOT_FOUND == ssoe.LastErrorCode)
{
string strSSOLogonFormURL = SingleSignonLocator.GetCredentialEntryUrl("FormSSO");
Response.Write(User.Identity.Name.ToString() +
"您好!<br>" + "SSO TO GMail Fail!<BR><a href=" + strSSOLogonFormURL +
" target='_self' >找不到對應的帳號,請點此連結輸入CMMI帳號及密碼!</a><P><input type='button' onclick='javascript:window.close()' value='關閉' />");
}
}
catch (SingleSignonException ex)
{
Response.Write(ex.LastErrorCode);
Response.Write(ex.Message);
}
catch (Exception exx)
{
Response.Write(exx.Message);
Response.Write(exx.InnerException);
}
finally
{
if (IntPtr.Zero != pUserName)
{
System.Runtime.InteropServices.Marshal.ZeroFreeBSTR(pUserName);
System.Runtime.InteropServices.Marshal.ZeroFreeBSTR(pPassword);
}
}
}
}
}

ASP.net應用程式(SsoToCMMI.aspx)的代碼如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SsoToCMMI.aspx.cs" Inherits="FormSSO.SsoToCMMI" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>未命名頁面</title>
</head>
<body>
<form id="form1" runat="server">
<div>

</div>
</form>
</body>
</html>

我以前只寫過dwp的webPart ,像這種Asp.net頁面調用後臺程序的WebPart該如何部署呢?請指點下,謝謝!

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: