導航:首頁 > 配伺服器 > c連接遠程資料庫伺服器地址

c連接遠程資料庫伺服器地址

發布時間:2022-04-20 08:22:50

A. 如何連接遠程資料庫sql server 2008

打開sql2008,使用windows身份登錄 2 登錄後,右鍵選擇「屬性」。左側選擇「安全性」,選中右側的「SQL Server 和 Windows 身份驗證模式」以啟用混合登錄模式 3 選擇「連接」,勾選「允許遠程連接此伺服器」,然後點「確定」 「安全性」,「登錄名」;「sa」,右鍵選擇「屬性」 左側選擇「常規」,右側選擇「SQL Server 身份驗證」,並設置密碼 右擊資料庫選擇「方面」 在右側的方面下拉框中選擇「伺服器配置」;將「RemoteAccessEnabled」屬性設為「True」,點「確定」 至此SSMS已設置完畢,先退出,再用sa登錄,成功即表示sa帳戶已經啟用 打開sql server配置管理器 下面開始配置SSCM,選中左側的「SQL Server服務」,確保右側的「SQL Server」以及「SQL Server Browser」正在運行 在左則選擇sql server網路配置節點下的sqlexpress的協議,在右側的TCP/IP默認是「否」,右鍵啟用或者雙擊打開設置面板將其修改為「是」 選擇「IP 地址」選項卡,設置TCP的埠為「1433」 將"客戶端協議"的"TCP/IP"也修改為「Enabled」 配置完成,重新啟動SQL Server 2008。此時應該可以使用了,但是還是要確認一下防火牆。打開防火牆設置。將SQLServr.exe(C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Binn\sqlservr.exe)添加到允許的列表中。

B. 如何連接遠程Mysql資料庫

一、連接遠程資料庫:

1、顯示密碼

如:MySQL
連接遠程資料庫(192.168.5.116),埠「3306」,用戶名為「root」,密碼「123456」

C:/>mysql -h
192.168.5.116 -P 3306 -u root -p123456

2、隱藏密碼

如:MySQL 連接本地資料庫,用戶名為「root」,

C:/>mysql -h
localhost -u root -p
Enter password:

二、配置mysql允許遠程鏈接

默認情況下,mysql帳號不允許從遠程登陸,只能在localhost登錄。本文提供了二種方法設置mysql可以通過遠程主機進行連接。

一、改表法

在localhost登入mysql後,更改 "mysql" 資料庫里的 "user" 表裡的 "host"
項,將"localhost"改稱"%"

例如:

#mysql -u root
-p

Enter password:

……

mysql>

mysql>update user
set host = '%' where user = 'root';

mysql>select host,
user from user;

二、授權法

例如:
你想myuser使用mypassword(密碼)從任何主機連接到mysql伺服器的話。

mysql>GRANT ALL
PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

如果你想允許用戶myuser從ip為192.168.1.6的主機連接到mysql伺服器,並使用mypassword作為密碼

mysql>GRANT ALL
PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3'IDENTIFIED BY

'mypassword' WITH GRANT OPTION;

mysql>FLUSH
PRIVILEGES

使修改生效,就可以了
常見問題:
1、在採用法二授權法之後,無法在本地登錄mysql(如:#mysql -u root -p -h
192.168.5.116
Enter password:
ERROR 1045 (28000): Access denied for user
'root'@'loadb116' (using password: YES)
上例中loadb116是主機名.
解決方法:
1、這時可以使用:mysql -u
root -p 登錄,進入到mysql後。
mysql> grant all privileges on *.* to 'root'@'loadb116'

identified by '123456' with grant option;
Query OK, 0 rows affected
(0.00 sec)
mysql> flush
privileges;
Query OK, 0 rows affected (0.00
sec)
2、在本地使用ip地址登錄
#
mysql -u root -p -h
192.168.5.116
Enter password:
Welcome to the MySQL
monitor. Commands end with ; or /g.
Your MySQL connection id is 60
Server
version: 5.1.45 MySQL Community Server (GPL)

Type 'help;' or '/h' for
help. Type '/c' to clear the buffer.

mysql>

C. C# C/S程序使用SQL server2005資料庫,我只會在區域網內用程序訪問資料庫,如何實現互聯網遠程連資料庫

如果安全性要求不高的話,區域網與你所說的廣域網其實沒有任何區別,舉個例子
data source=192.168.1.10;initial catalog=mcudata;user id=sa;password=sa;
這個是你以前用的連接字元串,192.168.1.10是區域網內那台資料庫主機的ip地址,切換到廣域網上是完全一樣的,換掉這個ip地址就行了,但是這裡面有個前提,也就是那台資料庫服務主機要麼有公網的ip地址(所謂的公網地址就是指你在資料庫主機上用ipconfig/all看到的ip與在資料庫主機上訪問ip138這個網站顯示的地址一致),如果那台資料庫伺服器只有內網地址(比如192.168.1.10),那隻能在他們單位的網關或者路由器上做一個埠映射,將1433埠映射到192.168.1.10上。
這裡面又有一個新的問題,也就是固定IP的問題,你可以先了解一下。

如果對安全性要求較高,並且那台資料庫伺服器也只有內網192的地址,一般建議由客戶單位向寬頻運營商申請一個VPN專線,這樣在外面可以由VPN來接入客戶單位的區域網,具體內容請向寬頻運營商咨詢。這種情況下你的程序就不需要做任何更改。

至於速度當然要比區域網慢的多,具體就取決於互聯網網速了,要實際測試才知道效果。

D. C/S模式,C#如何遠程連接sql2008資料庫

一般C/S模式連接遠程資料庫是不會去直連的,而是通過一個中間系統去連接資料庫。比如說你舉的例子,客戶端在上海,資料庫在北京,那麼需要在北京架一台WebService伺服器(或在上海或其他城市也行,最好是在北京,與資料庫在同一個內網里,但只有WebService伺服器對外,而資料庫伺服器不對外),然後在WebService中實現增刪查改功能,再利用Client端去直接訪問這些WebService功能即可。

E. oracle怎麼連接遠程資料庫伺服器

前提是電腦必須安裝oracle客戶端。
配置方法:
1、找到oracle的安裝目錄。如:C:\oracle\proct\10.2.0\db_1\network\ADMIN

2、找到tnsnames.ora文件。

3、用文本方式打開,添加以下內容:

本地實例名 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 遠程資料庫IP地址)(PORT = 遠程伺服器埠號))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = 遠程資料庫服務名)
)
)

其中中文部分是需要修改的部分,除第一個「本地實例名」外,其他需要跟遠程資料庫管理員咨詢,本地實例名就是方便自己識別資料庫的一個名字,可以自定義。

4、然後打開pl/sql就能看到自己創建的鏈接

F. 用WINCC的C腳本如何訪問遠程SQL伺服器上的資料庫

用WINCC的C腳本訪問他的SQL資料庫並不合適!因為本來vc++和VB對比,vb訪問資料庫比VC要方便,容易掌握,快捷最好的方法:採用VB編寫SQL訪問數據,外掛於WINCC。訪問WINCCSQL,用常規的方法是訪問不到的,因為SQLFORWINCC有獨特的訪問方式。 到PLC學習網網站查看回答詳情>>

G. 關於Linux下C語言連接資料庫的問題,要求編寫一個可以遠端連接到資料庫的BASH SHELL。

幫你一下吧,我只能粗寫,你自己詳細參考一下函數庫,下面localhost,是資料庫伺服器的地址,
username,password分別為訪問資料庫所需要的用戶名和密碼,database是資料庫的名稱,請你參考MYSQL結構體以獲取更加詳細的參數信息
#include <stdlib.h>
#include<stdio.h>
#include "mysql.h"
int main(int argc,char**argv){
MYSQL *conn_ptr;
conn_ptr=mysql_init(NULL);
if(!conn_ptr){
fprintf(stderr,"mysql_init failed\n");
return EXIT_FAILURE;
}
conn_ptr=mysql_real_connect(conn_ptr,"localhost","username","password","database",0,NULL,0);
if(conn_ptr){
printf("Connection success\n");
}else{
printf("Connection failed\n");
}
mysql_close(conn_ptr);
return EXIT_SUCCESS;
}

你最好上mysql網站上看,這個東西很全的,不過是英文,如果你英文還可以,那你會得到很大的幫助,中文的我也不清楚,但是這種東西一般都是千篇一律,關鍵還是你的經驗,C做東西和一些其它面向對象的語言是不同的,尤其是JAVA活著.NET之類的,建議你經常上英文網站查東西,國內國外對C的水平不可同日而語。我給你mysql的C開發參考的網址:
http://dev.mysql.com/doc/refman/5.0/en/c.html

給你推薦一本書吧《Linux環境高級編程》這是一本相當經典的Linux下c語言書籍

H. C# 怎樣才能實現客戶端通過伺服器端連接資料庫伺服器

可以處理的,步驟為:
1.客戶端與伺服器連(用Socket通訊)
2.客戶端向處伺服器發送SQL語句,如搜索一個表的數據
3.伺服器接到請求,執行SQL語句返回一個DataTable
4.伺服器將這個DataTable進行序列化、並且壓縮
5.伺服器將【序列化和壓縮】後的byte[] msg數組傳給客戶端
6.客戶端收到byte[] msg數組先進行解壓縮、和反序列化為DataTable
7.再將DataTable通過DataSet和SqlDataAdapter.Update(Table)存在SQL中
下面我只給一些關鍵的代碼,我有實現過的

第一步.客戶端==》連接伺服器並通訊,主要是發送SQL給伺服器返回一個DataTable表
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
using System.IO.Compression;

namespace Client
{
public partial class FormClient : Form
{
DataTable dt;
public FormClient()
{
InitializeComponent();
}

private void ClientTest(string str)
{
Socket client;
String returnData;
byte[] buf = new byte[9991024]; //此處可能有些問題
//IPAddress local = IPAddress.Parse("116.25.83.127");
IPAddress local = IPAddress.Parse("127.0.0.1");//可改為遠程IP地址
IPEndPoint iep = new IPEndPoint(local, 6060);
try
{
client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
client.Connect(iep);
}
catch (SocketException)
{
Console.WriteLine("無法連接到伺服器!");
return ;
}

//輸入exit,可以斷開與伺服器的連接
if (str == "")
{
return;
}
//發送SQL語句給伺服器
client.Send(Encoding.Unicode.GetBytes(str));

//得到實際收到的位元組總數
Int32 rec = client.Receive(buf);
Console.WriteLine(Encoding.ASCII.GetString(buf, 0, rec));
//接收伺服器返回的數據
returnData = System.Text.Encoding.Unicode.GetString(buf,0,rec);

//將returnData解壓縮後,再反序列化轉成DataTable dt = DeserializerDataTable(Decompress(returnData));
Console.WriteLine("斷開與伺服器的連接......");
client.Close();
dataGridView1.DataSource = dt;
}

//將DataTable表反序列化
private DataTable DeserializerDataTable(string pXml)
{
StringReader strReader = new StringReader(pXml);
XmlReader xmlReader = XmlReader.Create(strReader);
XmlSerializer serializer = new XmlSerializer(typeof(DataTable));
DataTable dt = serializer.Deserialize(xmlReader) as DataTable;

return dt; }
//給伺服器傳SQL語句
private void buttonSearch_Click(object sender, EventArgs e)
{
string Sql = String.Format("Select top {0} * From Part Where CorpCode_='PT'", textBox1.Text.Trim()); ;
ClientTest(Sql);

}
#region 壓縮和解壓縮
public string Compress(string str)
{
byte[] buffer = Encoding.Unicode.GetBytes(str);
MemoryStream ms = new MemoryStream();
using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true))
{
zip.Write(buffer, 0, buffer.Length);
}
ms.Position = 0;
MemoryStream outStream = new MemoryStream();
byte[] compressed = new byte[ms.Length];
ms.Read(compressed, 0, compressed.Length);

byte[] gzBuffer = new byte[compressed.Length + 4];
System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length);
System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4);
return Convert.ToBase64String(gzBuffer);
}

//解壓縮
public string Decompress(string compressedText)
{
byte[] gzBuffer = Convert.FromBase64String(compressedText);
using (MemoryStream ms = new MemoryStream())
{
int msgLength = BitConverter.ToInt32(gzBuffer, 0);
ms.Write(gzBuffer, 4, gzBuffer.Length - 4);
byte[] buffer = new byte[msgLength];
ms.Position = 0;
using (GZipStream zip = new GZipStream(ms, CompressionMode.Decompress))
{
zip.Read(buffer, 0, buffer.Length);
}
return Encoding.Unicode.GetString(buffer);
}
}

#endregion
}
}

第二步.伺服器收到SQL語句執行,並回傳一個表給客戶端
伺服器接到請求,執行SQL語句返回一個DataTable
伺服器將這個DataTable進行序列化、並且壓縮
伺服器將【序列化和壓縮】後的byte[] msg數組傳給客戶端

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets; //可以使用套接字
using System.Threading; //可以使用多線程
using System.Data.SqlClient;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
using System.IO.Compression;

namespace AppServer
{
public partial class FormApp : Form
{
public FormApp()
{
InitializeComponent();
}
private void FormApp_Load(object sender, EventArgs e)
{
// AppService instance = new AppService();
}

private void buttonStartService_Click(object sender, EventArgs e)
{
AppService();

}
private Socket server;
private Socket client;
private void AppService()
{
/*
//本機IP
string name = Dns.GetHostName();
IPHostEntry host = Dns.GetHostByName(name);
IPAddress id= host.AddressList[0];
* */

//IPAddress local = IPAddress.Parse("192.168.0.100");
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 6060);
server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 將套接字與本地終結點綁定
server.Bind(iep);
//在本地13000埠號上進行監聽
server.Listen(10);
while (true)
{
// 得到包含客戶端信息的套接字
client = server.Accept();
//創建消息服務線程對象ClientService方法委託給線程
Thread newthread = new Thread(new ThreadStart(ClientService));
// 啟動消息服務線程
newthread.Start();
}
}
private Int32 i;
private void ClientService()
{
Socket s = client;
String data = null;
String returnData = null;
byte[] bytes = new byte[1024];

while ((i = s.Receive(bytes)) != 0)
{
//接收客戶端的SQL
data = System.Text.Encoding.Unicode.GetString(bytes, 0, i);
//將接到的String 執行SQL返回表
DBAccess obj = new DBAccess(); //專門傳給SQL的類相當於DBHELP
DataTable dt = obj.FillData(data, "TEST", 1);//執行SQL返回表

//將返回的表轉為String,並將returnData壓縮
returnData = obj.Compress(obj.SerializeDataTableXml(dt));
byte[] msg = System.Text.Encoding.Unicode.GetBytes(returnData);

// 發送數據表給客戶端 s.Send(msg);
if ((i = s.Receive(bytes)) == 0)
continue;
}
//關閉套接字
s.Close();
}
}

//DBAccess的部份代碼

class DBAccess
{
#region DataTable序列化與反序列化
public string SerializeDataTableXml(DataTable dt)
{
StringBuilder sb = new StringBuilder();
XmlWriter writer = XmlWriter.Create(sb);
XmlSerializer serializer = new XmlSerializer(typeof(DataTable));
serializer.Serialize(writer, dt);
writer.Close();

return sb.ToString(); }
public DataTable DeserializerDataTable(string pXml)
{
StringReader strReader = new StringReader(pXml);
XmlReader xmlReader = XmlReader.Create(strReader);
XmlSerializer serializer = new XmlSerializer(typeof(DataTable));
DataTable dt = serializer.Deserialize(xmlReader) as DataTable;

return dt; }
#endregion
#region 壓縮和解壓縮
public string Compress(string str)
{
byte[] buffer = Encoding.Unicode.GetBytes(str);
MemoryStream ms = new MemoryStream();
using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true))
{
zip.Write(buffer, 0, buffer.Length);
}
ms.Position = 0;
MemoryStream outStream = new MemoryStream();
byte[] compressed = new byte[ms.Length];
ms.Read(compressed, 0, compressed.Length);

byte[] gzBuffer = new byte[compressed.Length + 4];
System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length);
System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4);
return Convert.ToBase64String(gzBuffer);
}

public string Decompress(string compressedText)
{
byte[] gzBuffer = Convert.FromBase64String(compressedText);
using (MemoryStream ms = new MemoryStream())
{
int msgLength = BitConverter.ToInt32(gzBuffer, 0);
ms.Write(gzBuffer, 4, gzBuffer.Length - 4);
byte[] buffer = new byte[msgLength];
ms.Position = 0;
using (GZipStream zip = new GZipStream(ms, CompressionMode.Decompress))
{
zip.Read(buffer, 0, buffer.Length);
}
return Encoding.Unicode.GetString(buffer);
}
}

#endregion
}

第三步.調用DataSet和SqlDataAdapter.Update(Table)存在SQL中,這個是傳入一個DataGridView ,可在客戶端中使用保存(部份代碼,沒有連接SQL資料庫的)
#region 公共保存DataGridView
public bool DataGridViewSave(DataTable table,string tableName,string CorpCode)
{
string Sql = String.Format("Select Top 0 * From {0} Where CorpCode_='{1}' ", tableName, CorpCode);
SqlDataAdapter sda = new SqlDataAdapter(this.CreateCommand(Sql, null, 1));
SqlCommandBuilder scb = new SqlCommandBuilder(sda);
sda.Update(table);
this.Close();
return true;
}
#endregion

I. 用c語言怎麼連接資料庫呢

1、配置ODBC數據源。
2、使用SQL函數進行連接。
對於1、配置數據源,配置完以後就可以編程操作資料庫了。
對於2、使用SQL函數進行連接,參考代碼如下:

#include<windows.h>
#include<sql.h>
#include<sqlext.h>
voidmain()
{
HENVhenv;//環境句柄
HDBChdbc;//數據源句柄
HSTMThstmt;//執行語句句柄
unsignedchardatasource[]="數據源名稱";//即源中設置的源名稱
unsignedcharuser[]="用戶名";//資料庫的帳戶名
unsignedcharpwd[]="密碼";//資料庫的密碼
unsignedcharsearch[]="selectxmfromstuwherexh=0";
SQLRETURNretcode;//記錄各SQL函數的返回情況
//分配環境句柄
retcode=SQLAllocEnv(&henv);//等介於SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL
,&henv);
//設置ODBC環境版本號為3.0
retcode=SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);
//分配連接句柄
retcode=SQLAllocConnect(henv,&hdbc);//等介於SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
//設置連接屬性,登錄超時為*rgbValue秒(可以沒有)
//SQLSetConnectAttr(hdbc,SQL_LOGIN_TIMEOUT,(SQLPOINTER)(rgbValue),0);
//直接連接數據源
//如果是windows身份驗證,第二、三參數可以是
,也可以是任何字串
//SQL_NTS即"
retcode=SQLConnect(hdbc,datasource,SQL_NTS,user,SQL_NTS,pwd,SQL_NTS);
//分配語句句柄
retcode=SQLAllocStmt(hdbc,&hstmt);//等介於SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);
//直接執行查詢語句
retcode=SQLExecDirect(hstmt,search,SQL_NTS);
//將數據緩沖區綁定資料庫中的相應欄位(i是查詢結果集列號,queryData是綁定緩沖區,BUFF_LENGTH是緩沖區長度)
SQLBindCol(hstmt,i,SQL_C_CHAR,queryData[i-1],BUFF_LENGTH,0);
//遍歷結果集到相應緩沖區queryData
SQLFetch(hstmt);
/*
*對遍歷結果的相關操作,如顯示等
*/
//注意釋放順序,否則會造成未知錯誤!
SQLFreeHandle(SQL_HANDLE_STMT,hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
SQLFreeHandle(SQL_HANDLE_ENV,henv);
}

J. 怎麼遠程連接到伺服器oracle資料庫

ORACLE客戶端連伺服器的注意事項

1. 通過SQL*NET協議,ORACLE客戶端連伺服器時一般需要配置sqlnet.ora和tnsnames.ora,init.ora。
它們默認的目錄在$ORACLE_HOME/network/admin 目錄下

也可以設置環境變數TNS_ADMIN指向你想用的sqlnet.ora和tnsnames.ora目錄
例如:
TNS_ADMIN=/home/oracle/config/9.0.1;export TNS_ADMIN

sqlnet.ora文件決定找資料庫伺服器別名的方式

默認的參數有
參數SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)表明用戶連接Oracle伺服器時使用哪種驗證方式NONE表示Oracle身份驗證,NTS表示操 作系統身份驗證,兩種方式可以並用。
ORA_DBA組中的域用戶和本地用戶不需要Oracle用戶名和密碼就可以登錄Oracle而且該組的用戶登錄資料庫後都具有SYSDBA許可權(多個實 例時,可以建立類似這樣的組ORA_SID_DBA,其中SID指實例名)同理:ORA_OPER組中的成員具有SYSOPER角色的許可權。
登錄方式 sqlplus 「/ as sysdba」
或者sqlplus nolog,然後SQL>connect / as sysdba

NAMES.DEFAULT_DOMAIN = WORLD
NAMES.DIRECTORY_PATH = (TNSNAMES, ONAMES, HOSTNAME)
表明解析客戶端連接時所用的主機字元串的方式
TNSNAMES表示採用TNSNAMES.ORA文件來解析;
ONAMES表示使用自己的名稱伺服器(Oracle Name Server)來解析,目前Oracle建議使用輕量目錄訪問協議LDAP來取代ONAMES;
HOSTNAME表示使用host文件,DNS,NIS等來解析;
如果你的ORACLE客戶端和伺服器默認的域名不一樣,需要用#號注釋第一行
#NAMES.DEFAULT_DOMAIN = WORLD
使它不起作用。
NAMES.DIRECTORY_PATH指定找伺服器別名的順序 (本地的tnsnames.ora文件, 命名伺服器, 主機名方式)
伺服器的sqlnet.ora里可以設置檢查客戶端是否alive的時間間隔
sqlnet.expire_time = 10

init.ora中的Remote_Login_Passwordfile對身份驗證的影響
三個可選值:
NONE:默認值,指示Oracle系統不使用密碼文件,通過操作系統進行身份驗證的特權用戶擁有SYSORA和SYSOPER許可權EXCLUSIVE:
1.表示只有一個資料庫實例可以使用密碼文件
2.允許將SYSORA和SYSOPER許可權賦值給SYS以外的其它用戶
SHARED:
1.表示可以有多個資料庫實例可以使用密碼文件
2.不允許將SYSORA和SYSOPER許可權賦值給SYS以外的其它用戶
所以,如果要以操作系統身份登錄,Remote_Login_Passwordfile應該設置為NONE
當登錄用戶不是ORA_DBA組和ORA_OPER組成員時,登錄資料庫需要在Oracle中創建當前操作系統用戶相同的用戶名,如果當前用戶是域用 戶,則名稱為:domainname\yourname,如果是本地計算機用戶,則名稱為:computername\yourname
創建方法:
create "domainname\yourname" identified externally;
操作系統,修改HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0下面添加AUTH_PREFIX_DOMAIN,值設為FALSE,在創建Oracle用戶時可以忽略 掉域名
這種方式下,init.ora中有一個參數將影響資料庫如何匹配一個windows用戶和Oracle用戶os_authent_prefix = ""
預設為空,Oracle8i以前,無該參數,而使用OPS$作為用戶名前綴.(Oracle用戶名最大長度限制為30個字元)

tnsnames.ora文件里寫資料庫伺服器別名的詳細內容,有以下幾種寫法:
# 一般的寫法
APPDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.35)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = appdb)
)
)
# 明確標明用dedicated方式連接資料庫
APPD=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.35)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=appdb)
(SERVER=DEDICATED)))

# 對多個listener埠做均衡負載方式連接資料庫
APPS =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.35)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.35)(PORT = 1856))
)
(CONNECT_DATA =
(SERVICE_NAME = appdb)
)
)

# 注意:如果資料庫伺服器用MTS,客戶端程序需要用database link時最好明確指明客戶端用dedicated直連方式,
# 不然會遇到很多跟分布式環境有關的ORACLE BUG。
# 一般情況下資料庫伺服器用直接的連接會好一些,除非你的實時資料庫連接數接近1000。

2. /etc/hosts (UNIX)
或者windows\hosts(WIN98) winnt\system32\drivers\etc\hosts (WIN2000)
客戶端需要寫入資料庫伺服器IP地址和主機名的對應關系。

127.0.0.1 localhost
192.168.0.35 oracledb oracledb
192.168.0.45 tomcat tomcat
202.84.10.193 bj_db bj_db

有些時候我們配置好第一步後,tnsping 資料庫伺服器別名顯示是成功的,
但是sqlplus username/password@servicename不通,jdbc thin link 也不通的時候,
一定不要忘了在客戶端做這一步,原因可能是DNS伺服器里沒有設置這個伺服器IP地址和主機名的對應關系。

如果同時有私有IP和Internet上公有IP,私有IP寫在前面,公有IP寫在後面。

編輯前最好留一個備份,增加一行時也最好用復制粘貼,避免編輯hosts時空格或者tab字元錯誤。

3. UNIX下ORACLE多資料庫的環境,OS客戶端需要配置下面兩個環境變數

ORACLE_SID=appdb;export ORACLE_SID
TWO_TASK=appdb;export TWO_TASK

來指定默認的目標資料庫
分享:

1
喜歡
0
贈金筆
閱讀(2478)┊ 評論 (0)┊ 收藏(0) ┊禁止轉載 ┊ 喜歡▼ ┊列印┊舉報

已投稿到:
排行榜

前一篇:Delphi IdHTTP1下載文件防止假死
後一篇:我的博客今天6歲246天了,我領取了元老博主徽章北京科蘭

閱讀全文

與c連接遠程資料庫伺服器地址相關的資料

熱點內容
伺服器託管業務怎麼選 瀏覽:743
廣州黑馬程序員怎麼樣 瀏覽:482
qq號加密碼圖片 瀏覽:173
如何建立游戲本地伺服器 瀏覽:947
懂車帝app直播怎麼開 瀏覽:25
長城h6壓縮比 瀏覽:68
游戲安裝包太大解壓失敗 瀏覽:719
當安卓報錯該怎麼解決 瀏覽:874
javaeclipse發布 瀏覽:617
分類演算法源碼 瀏覽:612
蟲抽濕解壓視頻 瀏覽:604
量化程序員分析 瀏覽:52
為什麼steam上csgo不能選伺服器 瀏覽:281
上海鈦靈特壓縮機 瀏覽:304
java字元串位置替換 瀏覽:879
Python可以去什麼崗位 瀏覽:826
邪教love的解壓縮密碼 瀏覽:864
android開發手勢密碼 瀏覽:86
文件夾內總頁數 瀏覽:641
米3怎麼升級到安卓系統 瀏覽:42