① sql server2008 怎麼調用遠程函數
如果你的是表值函數(函數的結果是返回表),則考慮使用下面的方法(因為:不允許使用遠程表值函數調用)
1select*fromOPENQUERY(a,'SELECT*FROb.dbo.abc(''函數的參數'')')
如果你的函數是返回值的,則沒有問題,只是應該使用
1selecta.b.dbo.abc('函數的參數')
<<quote>>http://bbs.csdn.net/topics/250082973<<quote>>
② 如何用SQL語句修改SQLServer「允許遠程連接」設置項
您好,你的問題,我之前好像也遇到過,以下是我原來的解決思路和方法,希望能幫助到你,若有錯誤,還望見諒!登陸SQL Server 2008(windows身份認證),登陸後右擊,選擇「屬性」。2左側選擇「安全性」,選中右側的「SQL Server 和 Windows 身份驗證模式」以啟用混合登錄模式。3選擇「連接」,勾選「允許遠程連接此伺服器」,建議將「最大並發連接數」按實際情況,進行設置,然後點「確定」。4展開「安全性」->「登錄名」->「sa」,右鍵選擇「屬性」。5左側選擇「常規」,右側選擇「SQL Server 身份驗證」,並設置密碼。選擇「狀態」,選中「啟用」,點擊「確定」。右擊資料庫選擇「方面」。在「方面」下接列表框中,選擇「伺服器配置,「RemoteAccessEnabled」屬性和」RemotoDacEnabled」設為「True」,點「確定」。至此SSMS已設置完畢,先退出,再用sa登錄,成功即表示sa帳戶已經啟用。下面開始配置Sql Server Configuration Manager (SSCM),選中左側的「SQL Server服務」,確保右側的「SQL Server」以及SQL Server Browser正在運行。打開左側「SqlServer網路配置」,打開「你自己資料庫實例名的協議」,查看右側的TCP/IP默認是「已禁用」,將其修改為「已啟用」。雙擊打開「TCP/IP」查看「TCP/IP屬性」下「協議」選項卡中的「全部偵聽」和「已啟用」項,是否都是設置成「是」。選擇「IP Addersses」選項卡,IP1、IP2、IPAll設置TCP埠為「1433」,TCP動態埠為空值,已啟用為「是」。將"客戶端協議"的"TCP/IP"也修改為「已啟用」。雙擊打開右側「TCP/IP」,打開「TCP/IP屬性」,將默認埠設為「1433」,已啟用為「是」。配置完成,重新啟動SQL Server 2008。最後一步,必需要防火牆上把SQL Server 的1433 TCP埠和1434 UDP埠映射出去。,非常感謝您的耐心觀看,如有幫助請採納,祝生活愉快!謝謝!
③ 如何在一條sql語句中連接遠程資料庫,sql server 2000
建議使用鏈接伺服器
在一條sql語句中連接遠程資料庫可以使用OpenRowSet函數,下例即在語句中以Jet4.0介面鏈接了遠程資料庫Northwind.mdb,其他資料庫可參考其介面參數修改。
USE Northwind
GO
SELECT c.*, o.*
FROM Northwind.dbo.Customers AS c
INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';'admin';'', Orders)
AS o
ON c.CustomerID = o.CustomerID
GO
以下是SQL Server 2005 聯機叢書資料,對Sql server 2000 依然有效。
OPENROWSET (Transact-SQL)
包含訪問 OLE DB 數據源中的遠程數據所需的全部連接信息。當訪問鏈接伺服器中的表時,這種方法是一種替代方法,並且是一種使用 OLE DB 連接並訪問遠程數據的一次性的臨時方法。對於較頻繁引用 OLE DB 數據源的情況,請改為使用鏈接伺服器。有關詳細信息,請參閱鏈接伺服器。可以在查詢的 FROM 子句中像引用表名那樣引用 OPENROWSET 函數。依據 OLE DB 訪問介面的功能,還可以將 OPENROWSET 函數引用為 INSERT、UPDATE 或 DELETE 語句的目標表。盡管查詢可能返回多個結果集,但 OPENROWSET 只返回第一個結果集。
OPENROWSET 還通過內置的 BULK 訪問介面支持大容量操作,正是有了該訪問介面,才能從文件讀取數據並將數據作為行集返回。
Transact-SQL 語法約定
語法
OPENROWSET
( { 'provider_name' , { 'datasource' ; 'user_id' ; 'password'
| 'provider_string' }
, { [ catalog. ] [ schema. ] object
| 'query'
}
| BULK 'data_file' ,
{ FORMATFILE = 'format_file_path' [ <bulk_options> ]
| SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB }
} )
<bulk_options> ::=
[ , CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ]
[ , ERRORFILE = 'file_name' ]
[ , FIRSTROW = first_row ]
[ , LASTROW = last_row ]
[ , MAXERRORS = maximum_errors ]
[ , ROWS_PER_BATCH = rows_per_batch ]
參數
' provider_name '
字元串,表示在注冊表中指定的 OLE DB 訪問介面的友好名稱(或 PROGID)。provider_name 沒有默認值。
' datasource '
對應於特定 OLE DB 數據源的字元串常量。datasource 是要傳遞給訪問介面的 IDBProperties 介面的 DBPROP_INIT_DATASOURCE 屬性,該屬性用於初始化訪問介面。通常,該字元串包含資料庫文件的名稱、資料庫伺服器的名稱,或者訪問介面能理解的用於定位資料庫的名稱。
' user_id '
字元串常量,它是傳遞給指定 OLE DB 訪問介面的用戶名。user_id 為連接指定安全上下文,並作為 DBPROP_AUTH_USERID 屬性傳入以初始化訪問介面。user_id 不能是 Microsoft Windows 登錄名稱。
' password '
字元串常量,它是傳遞給 OLE DB 訪問介面的用戶密碼。在初始化訪問介面時,password 作為 DBPROP_AUTH_PASSWORD 屬性傳入。password 不能是 Microsoft Windows 密碼。
' provider_string '
訪問介面特定的連接字元串,作為 DBPROP_INIT_PROVIDERSTRING 屬性傳入以初始化 OLE DB 訪問介面。通常 provider_string 封裝初始化訪問介面所需的所有連接信息。有關 SQL Native Client OLE DB 訪問介面可識別的關鍵字列表,請參閱Initialization and Authorization Properties。
catalog
指定對象所在的目錄或資料庫的名稱。
schema
架構的名稱或指定對象的對象所有者名稱。
object
對象名,它唯一地標識出將要操作的對象。
' query '
字元串常量,發送到訪問介面並由訪問介面執行。SQL Server 的本地實例不處理該查詢,但處理由訪問介面返回的查詢結果(傳遞查詢)。有些訪問介面並不通過表名而是通過命令語言提供其表格格式數據,將傳遞查詢用於這些訪問介面是非常有用的。只要查詢訪問介面支持 OLE DB Command 對象及其強制介面,那麼在遠程伺服器上就支持傳遞查詢。有關詳細信息,請參閱 SQL Native Client (OLE DB) Reference。
BULK
使用 OPENROWSET 的 BULK 行集訪問介面讀取文件中的數據。在 SQL Server 2005 中,OPENROWSET 無需將數據文件中的數據載入到目標表,便可讀取這些數據。這樣便可在單個 SELECT 語句中使用 OPENROWSET。
BULK 選項的參數可對何時開始和結束數據讀取、如何處理錯誤以及如何解釋數據提供有效控制。例如,可以指定以類型為 varbinary、varchar 或 nvarchar 的單行單列行集的形式讀取數據文件。默認行為詳見隨後的參數說明。
有關如何使用 BULK 選項的信息,請參閱本主題後面的「備注」部分。有關 BULK 選項所需許可權的信息,請參閱本主題後面的「許可權」部分。
注意:
當用於以完整恢復模式導入數據時,OPENROWSET (BULK ...) 不優化日誌記錄。
有關為大容量導入准備數據的信息,請參閱准備用於大容量導出或大容量導入的數據。
' data_file '
數據文件的完整路徑,該文件的數據將被復制到目標表中。
FORMATFILE = 'format_file_path'
指定格式化文件的完整路徑。SQL Server 2005 支持兩種格式化文件類型:XML 和非 XML。
格式化文件對定義結果集中的列類型是必需的。唯一的例外情況是指定 SINGLE_CLOB、SINGLE_BLOB 或 SINGLE_NCLOB 時;在這種情況下,不需要格式化文件。
有關格式化文件的信息,請參閱使用格式化文件大容量導入數據。
< bulk_options >
指定 BULK 選項的一個或多個參數。
CODEPAGE = { 'ACP '| 'OEM '| 'RAW '| 'code_page' }
指定該數據文件中數據的代碼頁。僅當數據含有字元值大於 127 或小於 32 的 char、varchar 或 text 列時,CODEPAGE 才是適用的。
CODEPAGE 值 說明
ACP
將數據類型為 char、varchar 或 text 的列由 ANSI/Microsoft Windows 代碼頁 (ISO 1252) 轉換為 SQL Server 代碼頁。
OEM(默認值)
將數據類型為 char、varchar 或 text 的列由系統 OEM 代碼頁轉換為 SQL Server 代碼頁。
RAW
不執行從一個代碼頁到另一個代碼頁的轉換。這是執行最快的選項。
code_page
指示編碼數據文件中的字元數據所在的源代碼頁;例如,850。該代碼頁對 SQL Server 2005 資料庫引擎正確解釋輸入數據是必需的。
ERRORFILE = 'file_name'
指定用於收集格式有誤且不能轉換為 OLE DB 行集的行的文件。這些行將按原樣從數據文件復制到此錯誤文件中。
錯誤文件在開始執行命令時創建。如果該文件已存在,將引發一個錯誤。此外,還創建了一個擴展名為 .ERROR.txt 的控制文件。此文件引用錯誤文件中的每一行並提供錯誤診斷。糾正錯誤後即可載入數據。
FIRSTROW = first_row
指定要載入的第一行的行號。默認值為 1,指示指定數據文件的第一行。通過對行終止符進行計數來確定行號。
LASTROW = last_row
指定要載入的最後一行的行號。默認值為 0,指示指定數據文件中的最後一行。
MAXERRORS = maximum_errors
指定格式化文件中定義的、在 OPENROWSET 引發異常之前可以發生的語法錯誤或格式有誤行的最大數目。在達到 MAXERRORS 之前,OPENROWSET 會忽略每個錯誤行,不載入它,並將其計為一個錯誤。
maximum_errors 的默認值為 10。
注意:
MAX_ERRORS 不適用於 CHECK 約束,也不適用於 money 和 bigint 數據類型的轉換。
ROWS_PER_BATCH = rows_per_batch
指定數據文件中近似的數據行數量。該值應與實際行數相同。
OPENROWSET 始終以單批形式導入數據文件。但如果將 rows_per_batch 的值指定為 > 0,則查詢處理器在查詢計劃中分配資源時將使用 rows_per_batch 的值作為提示。
默認情況下,ROWS_PER_BATCH 未知。指定 ROWS_PER_BATCH = 0 相當於忽略 ROWS_PER_BATCH。
SINGLE_BLOB
將 data_file 的內容作為類型為 varbinary(max) 的單行單列行集返回。
重要提示:
我們建議您僅使用 SINGLE_BLOB 選項(而不是 SINGLE_CLOB 和 SINGLE_NCLOB)導入 XML 數據,因為只有 SINGLE_BLOB 支持所有的 Windows 編碼轉換。
SINGLE_CLOB
通過以 ASCII 格式讀取 data_file,使用當前資料庫的排序規則將內容作為類型為 varchar(max) 的單行單列行集返回。
SINGLE_NCLOB
通過以 UNICODE 格式讀取 data_file,使用當前資料庫的排序規則將內容作為類型為 nvarchar(max) 的單行單列行集返回。
備注
只有在以下情況下才能使用 OPENROWSET 訪問 OLE DB 數據源中的遠程數據:指定訪問介面的 DisallowAdhocAccess 注冊表選項已顯式設置為 0,並啟用了 Ad Hoc Distributed Queries 高級配置選項。如果未設置這些選項,則默認行為不允許即席訪問。
訪問遠程 OLE DB 數據源時,伺服器不會自動委託可信連接的登錄標識,客戶端通過此登錄標識才能連接到正在查詢的伺服器。必須配置身份驗證委託。有關詳細信息,請參閱為委託配置鏈接伺服器。
如果 OLE DB 訪問介面在指定的數據源中支持多個目錄和架構,那麼就需要目錄及架構名稱。如果 OLE DB 訪問介面並不支持多個目錄和架構,那麼可以忽略 catalog 和 schema 的值。如果訪問介面只支持架構名稱,那麼必須指定一個格式為 schema.object 的兩部分名稱。如果訪問介面只支持目錄名稱,那麼必須指定一個格式為 catalog.schema.object 的三部分名稱。必須為使用 SQL Native Client OLE DB 訪問介面的傳遞查詢指定三部分名稱。有關詳細信息,請參閱 Transact-SQL 語法約定 (Transact-SQL)。
OPENROWSET 不接受參數變數。
使用帶有 BULK 選項的 OPENROWSET
以下 Transact-SQL 增強功能支持 OPENROWSET(BULK…) 函數:
與 SELECT 一起使用的 FROM 子句可以調用 OPENROWSET(BULK…) 而非表名,同時可以實現完整的 SELECT 功能。
帶有 BULK 選項的 OPENROWSET 在 FROM 子句中需要有一個相關名稱,也稱為范圍變數或別名。可以指定列別名。如果未指定列別名列表,則格式化文件必須具有列名。指定列別名會覆蓋格式化文件中的列名,例如:
FROM OPENROWSET(BULK...) AS table_alias
FROM OPENROWSET(BULK...) AS table_alias(column_alias,...n)
SELECT...FROM OPENROWSET(BULK...) 語句將直接查詢文件中的數據,無需將數據導入表中。SELECT...FROM OPENROWSET(BULK...) 語句還可以通過使用格式化文件指定列名和數據類型,從而列出大容量列別名。
INSERT...SELECT * FROM OPENROWSET(BULK...) 語句將數據文件中的數據大容量導入 SQL Server 表中。有關詳細信息,請參閱使用 BULK INSERT 或 OPENROWSET(BULK...) 導入大容量數據。
OPENROWSET BULK 選項與 INSERT 語句一起使用時,BULK 子句支持表提示。除了 TABLOCK 等常規表提示之外,BULK 子句還可以接受下列專用表提示:IGNORE_CONSTRAINTS(僅忽略 CHECK 和 FOREIGN KEY 約束)、IGNORE_TRIGGERS、KEEPDEFAULTS 和 KEEPIDENTITY。有關詳細信息,請參閱表提示 (Transact-SQL)。
有關如何使用 INSERT...SELECT * FROM OPENROWSET(BULK...) 語句的信息,請參閱導入和導出大容量數據。有關何時在事務日誌中記錄由大容量導入執行的行插入操作的信息,請參閱在大容量導入中按最小方式記錄日誌的前提條件。
注意:
使用 OPENROWSET 時,請務必了解 SQL Server 2005 是如何處理模擬的。有關安全注意事項的信息,請參閱使用 BULK INSERT 或 OPENROWSET(BULK...) 導入大容量數據。
大容量導出或導入 SQLXML 文檔
若要大容量導出或導入 SQLXML 數據,請在格式化文件中使用下列數據類型之一。
數據類型 效果
SQLCHAR 或 SQLVARYCHAR
在客戶端代碼頁或排序規則隱含的代碼頁中發送數據。
SQLNCHAR 或 SQLNVARCHAR
以 Unicode 格式發送數據。
SQLBINARY 或 SQLVARYBIN
不經任何轉換即發送數據。
許可權
OPENROWSET 許可權由傳遞給 OLE DB 訪問介面的用戶名的許可權確定。若要使用 BULK 選項,則需要有 ADMINISTER BULK OPERATIONS 許可權。
示例
A. 將 OPENROWSET 用於 SELECT 和 SQL Native Client OLE DB 訪問介面
以下示例使用 SQL Native Client OLE DB 訪問介面 (SQLNCLI) 訪問 HumanResources.Department 表,該表位於遠程伺服器 Seattle1 上的 AdventureWorks 資料庫中。使用 SELECT 語句定義返回的行集。訪問介面字元串包含 Server 和 Trusted_Connection 關鍵字。這些關鍵字由 SQL Native Client OLE DB 訪問介面識別。
復制代碼
SELECT a.*
FROM OPENROWSET('SQLNCLI', 'Server=Seattle1;Trusted_Connection=yes;',
'SELECT GroupName, Name, DepartmentID
FROM AdventureWorks.HumanResources.Department
ORDER BY GroupName, Name') AS a;
B. 使用 Microsoft OLE DB Provider for Jet
以下示例通過 Microsoft OLE DB Provider for Jet 訪問 Microsoft Access Northwind 資料庫中的 Customers 表。
注意:
該示例假定已經安裝了 Access。若要運行該示例,則必須安裝 Northwind 資料庫。有關如何安裝 Northwind 資料庫的詳細信息,請參閱下載 Northwind 和 pubs 示例資料庫。
復制代碼
SELECT CustomerID, CompanyName
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';
'admin';'',Customers)
GO
C. 使用 OPENROWSET 和 INNER JOIN 中的另一個表
以下示例從 SQL Server Northwind 資料庫的本地實例中的 Customers 表以及存儲在同一計算機上的 Access Northwind 資料庫中的 Orders 表選擇所有數據。
注意:
該示例假定已經安裝了 Access。若要運行該示例,則必須安裝 Northwind 資料庫。有關如何安裝 Northwind 資料庫的詳細信息,請參閱下載 Northwind 和 pubs 示例資料庫。
復制代碼
USE Northwind
GO
SELECT c.*, o.*
FROM Northwind.dbo.Customers AS c
INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';'admin';'', Orders)
AS o
ON c.CustomerID = o.CustomerID
GO
D. 使用 OPENROWSET 將文件數據大容量插入 varbinary(max) 列中
以下示例創建一個用於演示的小型表,並將名為 Text1.txt 的文件(位於 C: 根目錄)中的文件數據插入 varbinary(max) 列中。
復制代碼
USE AdventureWorks
GO
CREATE TABLE myTable(FileName nvarchar(60),
FileType nvarchar(60), Document varbinary(max))
GO
INSERT INTO myTable(FileName, FileType, Document)
SELECT 'Text1.txt' AS FileName,
'.txt' AS FileType,
* FROM OPENROWSET(BULK N'C:\Text1.txt', SINGLE_BLOB) AS Document
GO
E. 將 OPENROWSET BULK 訪問介面用於格式化文件以檢索文本文件中的行
以下示例使用格式化文件檢索用製表符分隔的文本文件 values.txt 中的行,該文件包含下列數據:
復制代碼
1 Data Item 1
2 Data Item 2
3 Data Item 3
格式化文件 values.fmt 說明 values.txt 中的列:
復制代碼
9.0
2
1 SQLCHAR 0 10 "\t" 1 ID SQL_Latin1_General_Cp437_BIN
2 SQLCHAR 0 40 "\r\n" 2 Description SQL_Latin1_General_Cp437_BIN
下面的語句是檢索此數據的查詢:
復制代碼
SELECT a.* FROM OPENROWSET( BULK 'c:\test\values.txt',
FORMATFILE = 'c:\test\values.fmt') AS a;
④ sql2005中,遠程連接資料庫是表格不能打開出現一個提示,高手請指教下,謝謝了
1、遠程連接無法使用伺服器名稱訪問,需要使用伺服器ip地址+,+埠號如:10.10.10.1,5122
,中間為半形逗號,如果用默認1433埠,「,埠號」可以省略。
2、登錄用戶,只能使用sql身份驗證。
3、如果是區域網內伺服器,還需要路由設備,設置埠轉向或者是虛擬伺服器:
類似圖中的設置,只要設置外部埠,內部埠,內部ip地址。
4、如果是動態ip的寬頻,還需要類似花生殼的ip地址轉向,主要作用是在公網ip改變時,不需要通知需要連接伺服器的用戶。
5、伺服器上遠程登錄要打開,在伺服器屬性頁面的連接選項卡中如圖:
⑤ mysql默認不支持遠程連接,需要grant授權。
GRANT ALL PRIVILEGES ON *.* TO '資料庫名'@'%' IDENTIFIED BY '資料庫密碼' WITH GRANT OPTION;這是應許任何地方遠程鏈接資料庫的命令,下面可以設置只應許一個ip鏈接的實例;GRANT ALL PRIVILEGES ON *.* TO 'yk'@'222.210.228.135' IDENTIFIED BY '1234
56' WITH GRANT OPTION;這是在客戶端鏈接mysql伺服器資料庫的命令;mysql -h 100.100.100.100 -uroot -ptest我們都習慣了在自己的機子上面安裝Mysql,然後用SQLyog等客戶端軟體來連接,今天試了一下連接遠程的mysql資料庫伺服器,結果彈出一串的英文,意思好像是說客戶機沒有得到許可,不能訪問資料庫,在google搜了一下,使用這種方法解決了:
1、進入mysql,創建一個新用戶kay:
2、 格式:grant 許可權 on 資料庫名.表名 用戶@登錄主機 identified by "用戶密碼";
grant select,update,insert,delete on *.* to [email protected] identified by "kaypass";
3、 查看結果,執行:
use mysql;
select host,user,password from user;
可以看到在user表中已有剛才創建的kay用戶。host欄位表示登錄的主機,其值可以用IP,也可用主機名,
將host欄位的值改為%就表示在任何客戶端機器上能以kay用戶登錄到mysql伺服器,建議在開發時設為%。
update user set host = '%' where user = 'kay';
還有一下方法:(我沒有試,僅供參考):
A、 ./mysqladmin -uroot -p21century reload
./mysqladmin -uroot -p21century shutdown
B、./mysqld_safe --user-root &
記住:對授權表的任何修改都需要重新reload,即執行第3步。 如果經過以上3個步驟還是無法從客戶端連接,請執行以下操作,在mysql資料庫的db表中插入一條記錄:
use mysql;
insert into db values('192.168.88.234','%','xuys','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
update db set host = '%' where user = 'xuys';
重復執行上面的第2、3步。 http://hi..com/dandankai/blog/item/c59d5d0eba1ddfc27acbe1d2.html
⑥ SQL遠程連接不上伺服器
遠程連接sql server 2000伺服器的解決方案
步驟:
一 看ping 伺服器IP能否ping通。
這個實際上是看和遠程sql server 2000伺服器的物理連接是否存在。如果不行,請檢查網路,查看配置,當然得確保遠程sql server 2000伺服器的IP拼寫正確。
二 在Dos或命令行下輸入telnet 伺服器IP 埠,看能否連通。
如telnet 202.114.100.100 1433
通常埠值是1433,因為1433是sql server 2000的對於Tcp/IP的默認偵聽埠。如果有問題,通常這一步會出問題。通常的提示是「……無法打開連接,連接失敗"。
如果這一步有問題,應該檢查以下選項。
1 檢查遠程伺服器是否啟動了sql server 2000服務。如果沒有,則啟動。
2 檢查伺服器端有沒啟用Tcp/IP協議,因為遠程連接(通過網際網路)需要靠這個協議。檢查方法是,在伺服器上打開 開始菜單-程序-Microsoft SQL Server-伺服器網路實用工具,看啟用的協議里是否有tcp/ip協議,如果沒有,則啟用它。
3 檢查伺服器的tcp/ip埠是否配置為1433埠。仍然在伺服器網路實用工具里查看啟用協議裡面的tcp/ip的屬性,確保默認埠為1433,並且隱藏伺服器復選框沒有勾上。
事實上,如果默認埠被修改,也是可以的,但是在客戶端做telnet測試時,寫伺服器埠號時必須與伺服器配置的埠號保持一致。如果隱藏伺服器復選框被勾選,則意味著客戶端無法通過枚舉伺服器來看到這台伺服器,起到了保護的作用,但不影響連接,但是Tcp/ip協議的默認埠將被隱式修改為2433,在客戶端連接時必須作相應的改變。
4 如果伺服器端操作系統打過sp2補丁,則要對windows防火牆作一定的配置,要對它開放1433埠,通常在測試時可以直接關掉windows防火牆(其他的防火牆也關掉最好)。
5 檢查伺服器是否在1433埠偵聽。如果伺服器沒有在tcp連接的1433埠偵聽,則是連接不上的。檢查方法是在伺服器的dos或命令行下面輸入
netstat -a -n 或者是netstat -an,在結果列表裡看是否有類似 tcp 127.0.0.1 1433 listening 的項。如果沒有,則通常需要給sql server 2000打上至少sp3的補丁。其實在伺服器端啟動查詢分析器,輸入 select @@version 執行後可以看到版本號,版本號在8.0.2039以下的都需要打補丁。
三 檢查客戶端設置
程序-Microsoft SQL Server - 客戶端網路使用工具。像在伺服器網路實用工具里一樣,確保客戶端tcp/ip協議啟用,並且默認埠為1433(或其他埠,與伺服器端保持一致就行)。
四 在企業管理器里或查詢那分析器連接測試
企業管理器-右鍵SQlserver組-新建sqlserver注冊-下一步-寫入遠程IP-下一步-選Sqlserver登陸-下一步-寫入登陸名與密碼(sa,password)-下一步-下一步-完成
查詢分析器-文件-連接-寫入遠程IP-寫入登錄名和密碼(sa,password)-確定
通常建議在查詢分析器里做,因為默認情況下,通過企業管理器注冊另外一台SQL Server的超時設置是4秒,而查詢分析器是15秒。
修改默認連接超時的方法:
企業管理器-工具-選項-在彈出的"SQL Server企業管理器屬性"窗口中,點擊"高級"選項卡-連接設置-在 登錄超時(秒) 後面的框里輸入一個較大的數字
查詢分析器-工具-選項-連接-在 登錄超時(秒) 後面的框里輸入一個較大的數字
通常就可以連通了,如果提示錯誤,則進入下一步。
五 錯誤產生的原因通常是由於SQL Server使用了"僅 Windows"的身份驗證方式,因此用戶無法使用SQL Server的登錄帳戶(如 sa )進行連接。解決方法如下所示:
1 在伺服器端使用企業管理器,並且選擇"使用 Windows 身份驗證"連接上 SQL Server。
2 展開"SQL Server組",滑鼠右鍵點擊SQL Server伺服器的名稱,選擇"屬性",再選擇"安全性"選項卡。
3 在"身份驗證"下,選擇"SQL Server和 Windows "。
4 重新啟動SQL Server服務。(在dos或命令行下面net stop mssqlserver停止服務,net start mssqlserver啟動服務,也是一種快捷的方法)。
答案補充
SQLServer 2005 :
要允許遠程連接SQL Server 2005 ,需要完成以下步驟:
在SQLServer 實例上啟用遠程連接。 打開伺服器 SQLBrowser 服務。配置防火牆以允許SQLBrowser 服務和SQLServer服務網路通信。
在SQLServer 實例上啟用遠程連接
1.指向「開始-程序-Microsoft SQL Server 2005-配置工具-SQL Server 外圍應用配置器」
2.在「SQL Server 2005 外圍應用配置器」頁, 單擊「服務和連接的外圍應用配置器」
3.然後單擊展開「資料庫引擎」, 選中「遠程連接」,在右邊選中「本地連接和遠程連接」, 再選擇要使用的協議,單擊「應用」,您會看到下消息:「直到重新啟動資料庫引擎服務後,對連接設置所做的更改才會生效。」,單擊「確定」按鈕返回
4.展開「資料庫引擎」, 選中「服務」,在右邊單擊「停止」,等到 MSSQLSERVER 服務停止, 然後單擊「啟動」,重新啟動MSSQLSERVER 服務。
答案補充
啟用 SQLServer 瀏覽器服務
1.指向「開始-程序-Microsoft SQL Server 2005-配置工具-SQL Server 外圍應用配置器」;2.在「SQL Server 2005 外圍應用配置器」頁, 單擊「服務和連接的外圍應用配置器」;3.然後單擊展開「SQL Server Browser」, 選中「服務」,在右邊「啟動類型」選擇「自動」,再單擊「啟動」,單擊「確定」按鈕返回.
在Windows 防火牆中為「SQL Server 2005」創建例外
1.在 Windows 防火牆設置界面中,選擇「 例外」 選項卡,然後單擊「添加程序」;2.在「添加程序窗口」中單擊「瀏覽」;3.然後找到「C:ProgramFilesMicrosoft FilesMicrosoft SQL Server MSSQL.1 MSSQLBinnsqlservr.exe」,單擊「確定」返回,注意 : 路徑可能會根據 SQL Server 2005 安裝不同而不同。 MSSQL.1 是佔位符,對應資料庫實例ID。4.對每個需要打開遠程訪問的SQL 實例,重復1-3。
答案補充
在Windows 防火牆中為「SQLBrowser」創建例外
1.在 Windows 防火牆設置界面中,選擇「 例外」 選項卡,然後單擊「添加程序」;2.在「添加程序窗口」中單擊「瀏覽」;3.然後找到「C:ProgramFilesMicrosoft FilesMicrosoft SQL Server90Sharedsqlbrowser.exe」,單擊「確定」返回
注意 : 路徑可能會根據 SQL Server 2005 安裝不同而不同
⑦ SQL 存儲過程調用異地資料庫 存儲過程或表
EXEC @s_procere1 @dt_bdate,@dt_edate,@dt_bindate,@dt_eindate,@s_line,@s_bus,@s_driver
這句應該是寫成動態SQL語句。
exec ( @s_procere1 + @dt_bdate + ', ' + @dt_edate + ',' + @dt_bindate + ',' @dt_eindate + ',' + @s_line + ',' + @s_bus + ',' + @s_driver )
因為,你取到得存儲過程名稱是一個字元串,所以要把這個串和相應的參數組成一個大串,然後用動態SQL執行的方法執行。
⑧ 怎麼設置sql2008允許遠程訪問
登陸SQL Server 2008(windows身份認證),登陸後右擊,選擇「屬性」。 左側選擇「安全性」,選中右側的「SQL Server 和 Windows 身份驗證模式」以啟用混合登錄模式。 選擇「連接」,勾選「允許遠程連接此伺服器」,建議將「最大並發連接數」按實際情況,進行設置,然後點「確定」。 「安全性」->「登錄名」->「sa」,右鍵選擇「屬性」。 左側選擇「常規」,右側選擇「SQL Server 身份驗證」,並設置密碼。 選擇「狀態」,選中「啟用」,點擊「確定」。 右擊資料庫選擇「方面」。 在「方面」下接列表框中,選擇「伺服器配置,「RemoteAccessEnabled」屬性和」RemotoDacEnabled」設為「True」,點「確定」。至此SSMS已設置完畢,先退出,再用sa登錄,成功即表示sa帳戶已經啟用。 下面開始配置Sql Server Configuration Manager (SSCM),選中左側的「SQL Server服務」,確保右側的「SQL Server」以及SQL Server Browser正在運行。 打開左側「SqlServer網路配置」,打開「你自己資料庫實例名的協議」,查看右側的TCP/IP默認是「已禁用」,將其修改為「已啟用」。 雙擊打開「TCP/IP」查看「TCP/IP屬性」下「協議」選項卡中的「全部偵聽」和「已啟用」項,是否都是設置成「是」。 選擇「IP Addersses」選項卡,IP1、IP2、IPAll設置TCP埠為「1433」,TCP動態埠為空值,已啟用為「是」。 將"客戶端協議"的"TCP/IP"也修改為「已啟用」。 雙擊打開右側「TCP/IP」,打開「TCP/IP屬性」,將默認埠設為「1433」,已啟用為「是」。配置完成,重新啟動SQL Server 2008。 最後一步,必需要防火牆上把SQL Server 的1433 TCP埠和1434 UDP埠映射出去。