全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2565
推到 Plurk!
推到 Facebook!

select * from [192.168.2.2].pubs.dbo.jobs出错

答題得分者是:careychen
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-03-30 09:13:37 IP:65.49.xxx.xxx 訂閱
比如,我想这样查询:

select * from [192.168.2.2].pubs.dbo.jobs

但会出错,请各位大大帮忙!
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-03-30 10:06:48 IP:59.120.xxx.xxx 未訂閱
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-03-30 15:22:10 IP:65.49.xxx.xxx 訂閱
谢谢楼上大大的关注!
不过,在本机上(192.168.2.2),这样可以写吗?

select * from [192.168.2.2].pubs.dbo.jobs
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-04-01 09:06:58 IP:118.169.xxx.xxx 未訂閱
1.不管是那一種資料庫語言, ip的指定多半是會有參數設定來提供的, 我還沒有見過可以直接在select 上這樣的寫法

2.你提問這樣的寫法是否可以, 其實答案就在你首發的裡面, 會出錯-->就表示這樣的寫法不被接受
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-04-01 10:10:24 IP:65.49.xxx.xxx 訂閱
谢谢P.D.版主大大!
我之所以有这一问,是因为我发现某些erp软体在其ini文件的设定中,有这样一条:
server=192.168.2.2

所以我在想,它是怎么实现的呢?难道是先把ip转换成电脑名,再使用吗?
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2010-04-02 09:16:28 IP:65.49.xxx.xxx 訂閱
我把我的code帖出来,请各位大大看看哪里出了问题,其中,button1能通过,button2和button3不能通过,不知错
在哪里:
第一步:先把自已电脑设一个ip,比如192.168.1.4
第二步:建立linkedserver,假设user=sa,password=''
EXEC sp_addlinkedserver @server = '192.168.1.4', @srvproduct = N'SQL Server'
EXEC sp_addlinkedsrvlogin @rmtsrvname = '192.168.1.4' , @useself = false, @rmtuser = 'sa',
@rmtpassword = ''
下面是code(放一个ADOConnection1元件连接到pubs资料库上):
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
server:string;
begin
server:='192.168.1.4';
adoquery1.close;
adoquery1.SQL.Clear;
adoquery1.SQL.add('select *');
adoquery1.SQL.add('from');
adoquery1.SQL.add('[' server ']');
adoquery1.SQL.add('.pubs.dbo.jobs');
adoquery1.ExecSQL;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
server:string;
begin
server:='192.168.1.4';
adoquery1.Active:=false;
adoquery1.close;
adoquery1.SQL.Clear;
adoquery1.SQL.add('select *');
adoquery1.SQL.add('from');
adoquery1.SQL.add('[' server ']');
adoquery1.SQL.add('.pubs.dbo.jobs');
adoquery1.Active:=true;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
server:string;
begin
server:='192.168.1.4';

adoquery1.close;
adoquery1.SQL.Clear;
adoquery1.SQL.add('select *');
adoquery1.SQL.add('from');
adoquery1.SQL.add('[' server ']');
adoquery1.SQL.add('.pubs.dbo.jobs');
adoquery1.ExecSQL;
adoquery1.First;
end;
end.
編輯記錄
luowy651 重新編輯於 2010-04-02 09:42:44, 註解 無‧
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2010-04-04 11:09:41 IP:60.248.xxx.xxx 訂閱


其實您的第一個 Button1 他本身就錯了,只是你是丟了 ExecSQL 出去,但實際上他並沒有回傳,您誤認為他是成功的
第二和第三個命令也是錯誤的,只是你的第一和第二 Button 差在用 ExecSQL 和 Open 的方式不同而已,
但第三個 Button 的命令是錯誤的下法,沒有 open,只有 ExecSQL,怎麼會可以 First 呢?
所以產生回來的回報狀況也不同

總結,您不可以用本機 Server 當成連結伺服器

------
價值的展現,來自於你用哪一個角度來看待它!!
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2010-04-06 09:42:56 IP:65.49.xxx.xxx 訂閱
谢谢各位大大,看来用ip是没办法了
系統時間:2024-05-16 13:49:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!