2011年2月22日 星期二

列印文件時,文件大小不正確

今早列印 Visual Studio 2010 Training Kit 的文件時,出現了下面的狀況。

image

嚇了一跳,還好很快就印完了。看了一下原來 word 的檔案,只有 3MB 而已.

image

有時候真不知道是 Windows 的問題,還是印表機 driver 的問題呢。

2011年2月14日 星期一

MOSS 2010 無法從組件 'System.Data.Services, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 載入型別 'System.Data.Services.Providers.IDataServiceUpdateProvider'。

看了一些 MOSS 2010 的新開發特色後,迫不及待的想試一下 OData 的實作。輸入 http://moss/_vti_bin/listdata.svc 後,原本預期出現的 atom xml 並未出現,取而待之的是會錯誤訊息。

無法從組件 'System.Data.Services, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 載入型別 'System.Data.Services.Providers.IDataServiceUpdateProvider'。

怎麼會這樣呢?

參考這一篇 blog,下載 ADO.NET Data Services Update 並安裝,重新開機之後就ok了。

2011年2月11日 星期五

MOSS 2010 如何換回 MOSS 2007 的介面

MOSS 2010 的介面(V4)固然好用,但使用者不習慣,不買單,也莫可奈何。

如果選了「更新使用者介面」並按確定了,Site Administrator 也就沒有 UI 可以換回 MOSS 2007 (V3) 的版本了 。

image

幸好,還可以寫程式。不過,寫 Code 還要 compile,太麻煩了。

MOSS 新版的 2010 有 PowerShell 可以使用。

$site = Get-SPSite("http://mosserver")
$web = $site.OpenWeb("path1/path2/path3")
$web.UIVersion = 3
$web.Update()
$web.Dispose()
$site.Dispose()

IE9 RC 版出來了

有興趣的人自己下載吧!

http://windows.microsoft.com/en-US/internet-explorer/downloads/ie-9/worldwide-languages

IE9 可能沒什麼了不起,只是市面上常見的標準,它大部份的通過了。

如下表。

clip_image002

參考 http://blogs.msdn.com/b/ie/archive/2011/02/10/acting-on-feedback-ie9-release-candidate-available-for-download.aspx

http://samples.msdn.microsoft.com/ietestcenter/

PS: 這個是微軟自己測試的報告,測試當然會很好看。 (IE 8 簡直把標準當參考。)

當然,IE 9 也需要開發人員的支持。Internet Explorer 9 開發者指南 就這樣產生了。在這份指南中,也大部份都在講 CSS3, HTML5 等標準

2011年2月1日 星期二

本機Windows驗證不通過?

這個很怪。剛開始完全弄不懂。

發生的是這樣子。我有一台伺服器,例如 serverA, FQDA 是 serverA.domainA。

為了作業方便,對內對外我希望是 serverB.domainB 都可以存取。在其他的伺服器都可以存取,但在這個伺服器,使用 http://serverB.domainB 時,會拋出 Windows 的驗證。而無論怎麼打帳密都不會過。此時,只要使用 http://localhost, http://serverA, http://serverA.domainA, 都會過,唯獨本機時不過.

在事件檢視器中會出現下面的錯誤

 

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name="Microsoft-Windows-Security-Auditing" Guid="{54849625-5478-4994-A5BA-3E3B0328C30D}" /> 
  <EventID>4625</EventID> 
  <Version>0</Version> 
  <Level>0</Level> 
  <Task>12544</Task> 
  <Opcode>0</Opcode> 
  <Keywords>0x8010000000000000</Keywords> 
  <TimeCreated SystemTime="2011-02-01T02:13:08.330597300Z" /> 
  <EventRecordID>42135</EventRecordID> 
  <Correlation /> 
  <Execution ProcessID="528" ThreadID="580" /> 
  <Channel>Security</Channel> 
  <Computer>PTTFS.pt.bankpro</Computer> 
  <Security /> 
  </System>
- <EventData>
  <Data Name="SubjectUserSid">S-1-0-0</Data> 
  <Data Name="SubjectUserName">-</Data> 
  <Data Name="SubjectDomainName">-</Data> 
  <Data Name="SubjectLogonId">0x0</Data> 
  <Data Name="TargetUserSid">S-1-0-0</Data> 
  <Data Name="TargetUserName">administrator</Data> 
  <Data Name="TargetDomainName">PT</Data> 
  <Data Name="Status">0xc000006d</Data> 
  <Data Name="FailureReason">%%2304</Data> 
  <Data Name="SubStatus">0x0</Data> 
  <Data Name="LogonType">3</Data> 
  <Data Name="LogonProcessName" /> 
  <Data Name="AuthenticationPackageName">NTLM</Data> 
  <Data Name="WorkstationName">PTTFS</Data> 
  <Data Name="TransmittedServices">-</Data> 
  <Data Name="LmPackageName">-</Data> 
  <Data Name="KeyLength">0</Data> 
  <Data Name="ProcessId">0x0</Data> 
  <Data Name="ProcessName">-</Data> 
  <Data Name="IpAddress">172.18.1.31</Data> 
  <Data Name="IpPort">56489</Data> 
  </EventData>
  </Event>

原因

使用 0xc000006d 當關鍵用,到Bing 搜尋一下找到一篇

Account failed to log on (0xc000006d) – Unable to load website from local server

這裡寫出了解法,並且原是:防止 DoS 攻擊。很怪吧!

解法是,在 registry 中,在 增加

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0 下新增一個名為 BackConnectionHostNames 的 MultiString,值就輸入 serverB.domainB。

這樣就解除了這個問題.

2011年1月28日 星期五

WPF 學習:自動更新

WPF 的應用程式如何自動更新呢?照目前微軟的建議,會使用ClickOnce 的方式來部署。之後,程式就可以照ClickOnce的方式來更新了。

以下是簡單的範例。

範例

xaml

<Window x:Class="AutoUpdate.MainWindow"
                xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                Title="MainWindow" Height="350" Width="525">
    <Grid>
        <StackPanel Name="panel">
        <TextBlock Text="V1" />
        </StackPanel>
    </Grid>
</Window>

code

using System.Deployment.Application;
using System.Windows;
using System.Windows.Controls;

namespace AutoUpdate
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            AutoUpdateIt();
        }

        private void AutoUpdateIt()
        {
            if (ApplicationDeployment.IsNetworkDeployed)
            {
                var ad = ApplicationDeployment.CurrentDeployment;
                var info = ad.CheckForDetailedUpdate();
                if (info.UpdateAvailable)
                {
                    UpdateApp();
                    DisplayRestartMessage();
                }
            }
        }

        private void UpdateApp()
        {
            ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
            ad.Update();
        }

        private void DisplayRestartMessage()
        {
            var newText = new TextBlock { Text = "程式已經更新。請重新啟動程式" };
            panel.Children.Add(newText);

            var button = new Button() { Content = "Restart" };
            button.Click += (sender, e) => Restart(sender, null);
            panel.Children.Add(button);
        }

        private void Restart(object sender, RoutedEventArgs e)
        {
            System.Windows.Forms.Application.Restart();
            Application.Current.Shutdown();
        }
    }
}

程式非常簡單。當程式運作時,發現了有新的版本,就自動下載並更新。更新完後,顯示訊息並讓使用者按「Restart」鍵重新啟動程式。

SNAGHTMLf15e48

範例程式下載

2011年1月27日 星期四

使用SQL Azure 心得

緣由

前天參加了微軟 PDW 的產品發表會,心知微軟的 SQL Server 產品真的是愈來愈強大了。

發表會中又再次提到了SQL Azure 資料庫。心想,不使用一下真的不太行。真的狠下心了,照著小朱的方法,註冊了一個帳號,花個小錢來試用一下。

過程

除了註冊這一回事是比較囉嗦之外,在使用 SQL Azure 真的是極其簡單。直接使用 SSMS (SQL Server Management Studio) 來管理資料庫就可以了。

但是,我的目的仍在於試用。看看SQL Azure雲端資料庫與一般的SQL Server使用上到底有什麼不同處?

差異

其實在 General Guidelines and Limitations (SQL Azure Database) 中已經提到了。但資料實在太多,還是只有親自使用一下才能了解真正的差異。

無法備份/還原

雲端資料庫不需要備份/還原,因為這樣的常見的資料庫管理工作已經不需要專責DBA來執行。當我們寫一份資料到SQL Azure,其實最後會儲存到三個地方。SQL Azure 在同一個資料中心(Data Center)會有兩份一模一樣的資料,當Server A掛掉時,Server B 立即取代。在另一個資料中心(不同的地理位置)還會備份一份資料,做為異地備援。換句話說,真正達到 High Availibility(高可用性)。

可是我已經習慣使用備份/還原的方式來作業了。這一點真的是很不習慣。可能是我之前習慣不好。

沒有 SQL Server Agent 的 Jobs 可用

我們也常用 SQL Server Agent 的 Job 來排程作業,執行常見的 SQL script。這一點也無法在 SQL Azure被設定了。

不能使用 SQL Profiler

sql script 的效能不好?我當然會使用SQL Profiler 看一指令執行的效能資訊。然而,SQL Profiler 無法在 SQL Azure 上執行。

謎之聲:當雲端資料庫的校能不好時,要用什麼工具看效能狀況啊?

不能使用 sp_configure

之前在 SQL Server 的管理經驗,在SQL Azure 可能都不管用了。DBA 常用的 sp_configure,在 SQL Azure 上是不被接受的。

好處

很棒,執行效能與自行建置的SQL Server 幾乎沒兩樣。除了 SSMS 管理時效能似乎慢了一些,但在AP 在執行SQL 指令時的效能似乎沒有任何差別,只看當時的網路狀況。

(待持續整理)

Share with Facebook