2005/01/30

[SQL]Setup Replication 時發生「Could not connect to server [ServerName] because 'distributor_admin' is not defined as a remote login at the server.」

在SQL 2000建立發行集時,發生以下錯誤:

Could not connect to server [ServerName] because 'distributor_admin' is not defined as a remote login at the server.

可能是安裝完SQL Server後又變更Windows Server的Server Name所導致,請執行以下指令確認一下:

SELECT @@Servername
GO
SELECT SERVERPROPERTY('ServerName')

如果兩個結果出來的不一樣,代表問題的原因就如我所說的,執行以下指令將Server Name改過來

Use Mastergo
Sp_DropServer 'OldServerName'
GO
Use Master
GO
Sp_Addserver 'YourServerNameNow', 'local'
GO

再去設定一次Replication應該就可以了...

2005/01/20

[SQL]如何設定informix到SQL Server 2000 的Linked Server?



首先你要先安裝好informix的ODBC Driver並且設定可以連結到informix db。開啟Enterprise Manager後,找到連結伺服器(SQL Server群組-->安全性),按右鍵「新增連結伺服器」:

提供者名稱:Microsoft OLE DB Provider for ODBC Drivers
產品名稱:Informix-CLI 2.5 (32 bit)
資料來源:ODBC的系統資料來源名稱

設定好之後,到「安全性」選擇「使用下列安全性條件進行連線」,輸入登入資料庫的帳號&密碼即可。

若使用Query Analyer,執行以下指令:

EXEC sp_addlinkedserver
@server = 'MyInfoDBSrv', -- 資料庫的server name
@provider = 'MSDASQL', -- Microsoft OLE DB Provider for ODBC
@datasrc = 'infordb', -- db name
@srvproduct = 'Informix-CLI 2.5 (32 bit)' -- product version
GO
EXEC sp_addlinkedsrvlogin 'MyInfoDBSrv', 'false', 'sa', 'login_name', 'password'

使用Linked Server記得要使用four-part name,如下:

SELECT * FROM MyInfoDBSrv.infordb.dbowner.table

2005/01/12

[MCDBA]Querying Microsoft SQL Server 2000 with Transact-SQL Workbook - Module1:Introduction to Transact-SQL

SQL = Structured Query Language

符合ANSI-SQL語法才可以跨資料庫共用

T-SQL三種類型:
物件型 Data Definition Language Statements (DDL) :

  • CREATE object_name : 新增物件
  • ALTER object_name : 修改物件
  • DROP object_name : 刪除物件


控制型 Data ControlLanguage Statements (DCL) :

  • GRANT : 授權
  • DENY : 不授權
  • REVOKE : 取消授權,繼承群組的權限

操作型 Data ManipulationLanguage Statements (DML) :

  • SELECT : 搜尋資料
  • INSERT : 新增資料
  • UPDATE : 修改資料
  • DELETE : 刪除資料

註解 Comments

單行註解 In-line Comments:

SELECT productname

, (unitsinstock - unitsonorder) -- Calculates inventory

, supplierID

FROM products

GO

多行註解 Block Comments:

/*

This code retrieves pala pala ....

....

*/

USE Northwind

SELECT * FROM Employees

保留字 Identifiers

  • 第一個字必為字母
  • 物件中有空格或保留字時使用[]或"" : 例如 SELECT * FROM [Blanks In Table Name]
  • @Local : Local變數
  • @@Global : Glocal變數或Function
  • #Local : Local Temp Table
  • ##Global : Global Temp Table
  • % : 1.萬用字元 2.取餘數(Modulo)
  • 名字不要取太長
  • 命名時可看出物件的型態;如:sp_StoredProcedures1, vw_VeiwTable1 ...等
  • 物件名稱儘量唯一,例如有一個Table Name為Customers,則View的名稱就不要再命名為Customers

資料型別 Types of Data

數值:

1.整數:

  • BigInt 8
  • Int 4
  • Smallint 2
  • Tinyint 1 0~255

2.小數:

  • decimal(10,3) : 10位數,3位小數,所以是7位整數+3位小數。
  • numeric : 用法同上。

3.浮點數:

  • float
  • real

P.S.浮點數不可為PK值,因為浮點數的精準度較差。

字串:

  • char(10) : 固定長度
  • nchar(10) : 固定長度,Unicode
  • Varchar(40) : 變動長度 (只能存20個中文字)
  • NVarchar(40) : 變動長度,Unicode (因為是Unicode,所以可以實際存到40個中文字)

日期:

  • datetime
  • smalldatetime : 只存日期

其它:

  • image
  • text

P.S.image及text的長度不受限制,只在欄位內存一個Point,代表實際資料存放的位置;因為是另外存放所以image及text的存取效能較差

T-SQL 語法風格