今天嘗試做資料庫的移機
做法是從A電腦的資料庫,按右鍵備份(選完整備份)
然後把備份檔複製到B電腦,在B電腦開一個新的資料庫,按右鍵還原
還原的時候遇到了這樣的錯誤訊息:備份組包含現有的資料庫以外的資料庫備份
爬了一下 google 文章
大部分的人是這樣解的:
===以下節錄其中一篇===
1.先執行以下的SQL
USE [master]
GO
restore database #資料庫名稱
from disk = '#備份資料庫檔路徑及檔名'
with
move '資料庫檔案邏輯名稱' to '資料庫mdf檔案所在位置',
move '資料庫記錄檔邏輯名稱' to '資料庫記錄檔ldf檔案所在位置',
NoRecovery,
Replace
go
執行完畢資料庫會呈現「還原中」
2.到要還原的資料庫上按右鍵→[工作]→[還原]→[資料庫]→[來源裝置]→瀏覽備份檔→勾選還原→確定
如此就完工了
===以上節錄其中一篇===
我看了覺得很怪 認為這個做法很不正常
於是繼續爬 Google 發現到另一個解法
===以下節錄另一個解===
SQL SERVER 資料庫備份:
=> 在資料庫上點右鍵 -> 工作 -> 備份 來建立備份。
(第一次建完整,第二次以後就建差異備份)
(一陣子可以重新再建立一次完整的備份)
若出現“無法開啟備份裝置 'C:\123'。作業系統錯誤 5(存取被拒。)。"”
-> 檢查SQL SERVER 組態管理員,SQL SERVER 的登入身份是否為LOCALSYSTEM
還原:
=> 在資料庫上右鍵 -> 工作 -> 還原 -> 資料庫
若出現“備份組包含現有的xx資料庫以外的資料庫備份”時,
在選項,勾選 覆寫現有的資料庫
===以上節錄另一個解===
這個看起來就很合理
但很多人搜尋到第一個解之後就寫一篇文紀念他
結果造成第一篇文的解法被發揚光大
所以我寫一篇文章 希望大家以後遇到這個問題可以選用第二個解
2013/12/13
2013/12/6
閱讀 jquery 原始碼的筆記 - Array.slice 的妙用
在 jquery v1.10.2 裡面的第 232行寫到 :
toArray: function() {
return core_slice.call( this );
}
他的功能是把 jquery 物件從物件 {} 轉換成陣列 []
在這裡的 this 是個 jquery 物件
而 core_slice 是宣告在第 55 行 :
core_deletedIds = [],
core_slice = core_deletedIds.slice,
以上來自第48行和第55行
我們知道他宣告了一個變數 core_slice 把陣列的 slice 函數拿來用
slice 能作什麼事呢?
從這裡我們知道執行
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1,3);
會得到
citrus = ["Orange","Lemon"];
的結果
根據測試我發現 core_slice.call(A) 的運作模式是先判斷 A 有無 length 屬性
如果有就 new 一個新的陣列 然後把對應的元素丟進新的陣列裡,如果沒有傳入參數的話就是全丟進去
嘗試實作看看 :
function slice(A, start, end) {
var output = [];
if (start == undefined) start = 0;
if (end == undefined) end = A.length;
if (start < 0) start = A.length + start;
if (end < 0) end = A.length + end;
for (var i = start; i < end; i++) {
output.push(A[i]);
}
return output;
}
試用起來跟內建的一樣
可以測試以下程式碼
var o = {};
o.length = 5;
o[0] = 1;
slice(o);
[].slice.call(o);
toArray: function() {
return core_slice.call( this );
}
他的功能是把 jquery 物件從物件 {} 轉換成陣列 []
在這裡的 this 是個 jquery 物件
而 core_slice 是宣告在第 55 行 :
core_deletedIds = [],
core_slice = core_deletedIds.slice,
以上來自第48行和第55行
我們知道他宣告了一個變數 core_slice 把陣列的 slice 函數拿來用
slice 能作什麼事呢?
從這裡我們知道執行
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1,3);
會得到
citrus = ["Orange","Lemon"];
的結果
根據測試我發現 core_slice.call(A) 的運作模式是先判斷 A 有無 length 屬性
如果有就 new 一個新的陣列 然後把對應的元素丟進新的陣列裡,如果沒有傳入參數的話就是全丟進去
嘗試實作看看 :
function slice(A, start, end) {
var output = [];
if (start == undefined) start = 0;
if (end == undefined) end = A.length;
if (start < 0) start = A.length + start;
if (end < 0) end = A.length + end;
for (var i = start; i < end; i++) {
output.push(A[i]);
}
return output;
}
試用起來跟內建的一樣
可以測試以下程式碼
var o = {};
o.length = 5;
o[0] = 1;
slice(o);
[].slice.call(o);
閱讀 jquery 原始碼的筆記 - && 和 || 運算子的妙用
在 jquery v1.10.2 裡面的第 153行寫到:
context && context.nodeType ? context.ownerDocument || context : document,
它的實際意義是
如果 context 不存在 或者 context 沒有 nodeType 屬性時,傳回 document
如果 context 存在,而且 context 具有 nodeType 屬性時,嘗試傳回 context.ownerDocument ,如果 context.ownerDocument 不存在就改成傳回 context
為什麼可以這樣寫 ?
運算子 && 的功能
執行 A && B 假如A可以轉換為 false 就 return A 否則 return B
試著實作 function and(A,B){ if(Boolean(A) === false) return A; return B;}
結果發現 A && B 跟 and(A, B) 的運作結果完全相同
運算子 || 的功能
執行 A || B 假如 A 可以轉換為 true 就 return A 否則 return B
試著實作 function or(A,B){ if(Boolean(A) === true) return A; return B;}
結果發現 A || B 跟 or(A, B) 的運作結果完全相同
附上可以轉換為 false 的物件列表 (從這裡找到的)
0
-0
null
""
false
undefined
NaN
除了這些東西之外 丟進 Boolean 都會傳回 true
2013/11/28
爐石戰記的配卡參數-先手卡與後手卡的比例
爐石戰記遊戲中玩家可以做兩件事
1. 配卡
我們可以對第二、三種卡作細分:第二種是順風卡、第三種是逆風卡,第二種卡適合順風時擴大優勢,第三種卡適合逆風時逆轉戰況
1. 配卡
2. 對戰
本文講的是關於配卡時的觀念
生物卡帶有各種能力,就觸發時機可分為上場時觸發(戰吼),存活在場上時生效,死亡之聲等時機不一一列舉。
就發動效果可分為聖盾、謿諷、衝鋒、抽牌等效果不一一列舉。
本文針對卡片效果,將效果大致分為三類:
1. 觸發能力不需要友軍在場,也不需要敵軍在場
例如:
召喚生物 → 機械幼龍技師(只有我跟咬咬)
抽牌 → 見習工程師
嘲諷 → 森金禦盾大師(卡死丁狗)
召喚生物 → 機械幼龍技師(只有我跟咬咬)
抽牌 → 見習工程師
嘲諷 → 森金禦盾大師(卡死丁狗)
2. 觸發能力需要友軍在場
例如:
友軍死亡抽牌 → 教派宗師
友軍增加能力 → 破碎之日教士、阿古斯防衛者、火舌圖騰
友軍死亡抽牌 → 教派宗師
友軍增加能力 → 破碎之日教士、阿古斯防衛者、火舌圖騰
3. 觸發能力需要敵軍在場
例如:
心控 → 精神控制技師
摧毀 → 奔竄的科多獸
沉默 → 破法者(也可以放友軍)
心控 → 精神控制技師
摧毀 → 奔竄的科多獸
沉默 → 破法者(也可以放友軍)
第一種卡是先手卡,任何時間點都可以打出卡,這種卡通常不太能改變戰況。
第二、三種卡則是後手卡,遊戲肯定會把後手卡的效果做得比先手卡強,而當後手卡的效果越強,觸發條件越嚴格。(酷拉皮卡:我的能力只能用在幻影旅團上)
我們可以對第二、三種卡作細分:第二種是順風卡、第三種是逆風卡,第二種卡適合順風時擴大優勢,第三種卡適合逆風時逆轉戰況
有些後手卡可以直接打出來,不一定需要發動,但有些卡必須發動才可以出牌 (黑鐵矮人)。
若牌組全放後手卡,就很容易卡手牌(除非你願意放棄觸發效果)。若全放先手卡,則難以逆轉戰況。
所以,一個牌組內,先手卡和後手卡的比例是需要考量的參數之一
當然,順風卡跟逆風卡的比例也是需要考量的參數之一
當然,順風卡跟逆風卡的比例也是需要考量的參數之一
2013/11/11
訂閱:
文章 (Atom)