9 个解决方案
#1
不知道你的服务器名是如何写的
多实例时应用实例名,单实例时应用实例名或机器名
另外,自 2005 起,默认是不予许远程访问的
多实例时应用实例名,单实例时应用实例名或机器名
另外,自 2005 起,默认是不予许远程访问的
#2
你把连接数据库的代码贴出来看一下
#3
php 5.3以后的版本是不能用mssql了,得去微软网站下载php扩展sqlsrv加载。
还付一chm手册。这个是speedphp fk自己新增的一个类,参考参考吧
<?php
/////////////////////////////////////////////////////////////////
// SpeedPHP中文PHP框架, Copyright (C) 2008 - 2010 SpeedPHP.com //
/////////////////////////////////////////////////////////////////
/**
* db_mssql MsSQL数据库的驱动支持
*/
class db_sqlsrv {
/**
* 数据库链接句柄
*/
public $conn;
/**
* 执行的SQL语句记录
*/
public $arrSql;
/**
* 按SQL语句获取记录结果,返回数组
*
* @param sql 执行的SQL语句
*/
public function getArray($sql)
{
if( ! $result = $this->exec($sql) )return array();
//if( ! sqlsrv_num_rows($result) )return array();
$rows = array();
while($rows[] = sqlsrv_fetch_array($result,SQLSRV_FETCH_ASSOC)){}
sqlsrv_free_stmt($result);
array_pop($rows);
return $rows;
}
/**
* 返回当前插入记录的主键ID
*/
public function newinsertid()
{
$result = $this->getArray("select @@IDENTITY as sptmp_newinsert_id");
return $result[0]['sptmp_newinsert_id'];
}
/**
* 格式化带limit的SQL语句
*/
public function setlimit($sql, $limit)
{
if(!eregi(",", $limit))$limit = '0,'.$limit;
$sql .= " LIMIT {$limit}";
return $this->translimit($sql);
}
/**
* 执行一个SQL语句
*
* @param sql 需要执行的SQL语句
*/
public function exec($sql)
{
$this->arrSql[] = $sql;
if( $result = sqlsrv_query($this->conn, $sql) ){
return $result;
}else{
if( ($errors = sqlsrv_errors() ) != null)
{
$msg = '';
foreach( $errors as $error)
{
$msg .= "message: ".$error[ 'message']."\n";
}
spError("{$sql}<br />执行错误: " . $msg);
}
}
}
/**
* 返回影响行数
*/
public function affected_rows()
{
return sqlsrv_rows_affected($this->conn);
}
/**
* 获取数据表结构
*
* @param tbl_name 表名称
*/
public function getTable($tbl_name)
{
$result = $this->getArray("SELECT syscolumns.name FROM syscolumns, systypes WHERE syscolumns.xusertype = systypes.xusertype AND syscolumns.id = object_id('{$tbl_name}')");
$columns = array();
foreach( $result as $column )$columns[] = array('Field'=>$column['name']);
return $columns;
}
/**
* 构造函数
*
* @param dbConfig 数据库配置
*/
public function __construct($dbConfig)
{//print_r($dbConfig);exit();
if(!function_exists('sqlsrv_connect'))spError('PHP环境未安装sqlsrv函数库!');
$linkfunction = 'sqlsrv_connect';
$this->conn = $linkfunction(
$dbConfig['host'],
array(
'UID'=>$dbConfig['login'],
'PWD'=>$dbConfig['password'],
'Database'=>$dbConfig['database'],
)
) or spError("数据库链接错误 : " . print_r(sqlsrv_errors(), true));
}
/**
* 对特殊字符进行过滤
*
* @param value 值
*/
public function __val_escape($value) {
if(is_null($value))return 'NULL';
if(is_bool($value))return $value ? 1 : 0;
if(is_int($value))return (int)$value;
if(is_float($value))return (float)$value;
if(@get_magic_quotes_gpc())$value = stripslashes($value);
$search=array("\\","\0","\n","\r","\x1a","'",'"');
$replace=array("\\\\","[NULL]","\\n","\\r","\Z","''",'\"');
return '\''.str_replace($search,$replace,$value).'\'';
}
/**
* 析构函数
*/
public function __destruct()
{
@sqlsrv_close($this->conn);
}
/**
* 转换MSSQL的LIMIT语句的转换函数
*/
function translimit($sql){
if(preg_match('/ limit /i', $sql)){
//去连续空格
while(preg_match("/ /", $sql))$sql = str_replace(" "," ",$sql);
$sql_array = explode(" ",$sql);
//取得部分重要的数组索引
$i = 0;
while(isset($sql_array[$i]) && $sql_array[$i]){
if(strtolower($sql_array[$i])=="from")$from_id = $i;
if(strtolower($sql_array[$i])=="limit")$limit_id = $i;
if(strtolower($sql_array[$i])=="order")$order_id = $i;
$i++;
}
$last_id = $i-1;
$two_num = explode(",",$sql_array[$limit_id+1]);
$totle_num = $two_num[0]+$two_num[1];
$sql_return = "SELECT ";
for($i=1;$i<=$from_id;$i++){
$sql_return .= $sql_array[$i];
$sql_return .= " ";
}
$sql_return .= " ( SELECT TOP {$two_num[1]} ";
for($i=1;$i<=$from_id;$i++){
$sql_return .= $sql_array[$i];
$sql_return .= " ";
}
$sql_return .=" ( SELECT TOP {$totle_num} ";
for($i=1;$i<$limit_id;$i++){
$sql_return .= $sql_array[$i] ;
$sql_return .= " ";
}
$sql_return .= " ) AS SPTMP_MSSQL_TOTLERESULT ";
if(preg_match("/ desc /i", $sql)){
for($i=$from_id+2;$i<$limit_id;$i++){
if(strtolower($sql_array[$i]) == "desc")continue;
$sql_return .= $sql_array[$i];
$sql_return .= " ";
}
}else{
for($i=$from_id+2;$i<$limit_id;$i++){
$sql_return .= $sql_array[$i];
$sql_return .= " ";
if($i == $order_id+2)$sql_return .= " DESC ";
}
}
$sql_return .= " ) AS SPTMP_MSSQL_ALLRESULT ";
for($i=$from_id+2;$i<$limit_id;$i++){$sql_return .= $sql_array[$i] ." ";}
return $sql_return;
}else{
return $sql;
}
}
}
还付一chm手册。这个是speedphp fk自己新增的一个类,参考参考吧
<?php
/////////////////////////////////////////////////////////////////
// SpeedPHP中文PHP框架, Copyright (C) 2008 - 2010 SpeedPHP.com //
/////////////////////////////////////////////////////////////////
/**
* db_mssql MsSQL数据库的驱动支持
*/
class db_sqlsrv {
/**
* 数据库链接句柄
*/
public $conn;
/**
* 执行的SQL语句记录
*/
public $arrSql;
/**
* 按SQL语句获取记录结果,返回数组
*
* @param sql 执行的SQL语句
*/
public function getArray($sql)
{
if( ! $result = $this->exec($sql) )return array();
//if( ! sqlsrv_num_rows($result) )return array();
$rows = array();
while($rows[] = sqlsrv_fetch_array($result,SQLSRV_FETCH_ASSOC)){}
sqlsrv_free_stmt($result);
array_pop($rows);
return $rows;
}
/**
* 返回当前插入记录的主键ID
*/
public function newinsertid()
{
$result = $this->getArray("select @@IDENTITY as sptmp_newinsert_id");
return $result[0]['sptmp_newinsert_id'];
}
/**
* 格式化带limit的SQL语句
*/
public function setlimit($sql, $limit)
{
if(!eregi(",", $limit))$limit = '0,'.$limit;
$sql .= " LIMIT {$limit}";
return $this->translimit($sql);
}
/**
* 执行一个SQL语句
*
* @param sql 需要执行的SQL语句
*/
public function exec($sql)
{
$this->arrSql[] = $sql;
if( $result = sqlsrv_query($this->conn, $sql) ){
return $result;
}else{
if( ($errors = sqlsrv_errors() ) != null)
{
$msg = '';
foreach( $errors as $error)
{
$msg .= "message: ".$error[ 'message']."\n";
}
spError("{$sql}<br />执行错误: " . $msg);
}
}
}
/**
* 返回影响行数
*/
public function affected_rows()
{
return sqlsrv_rows_affected($this->conn);
}
/**
* 获取数据表结构
*
* @param tbl_name 表名称
*/
public function getTable($tbl_name)
{
$result = $this->getArray("SELECT syscolumns.name FROM syscolumns, systypes WHERE syscolumns.xusertype = systypes.xusertype AND syscolumns.id = object_id('{$tbl_name}')");
$columns = array();
foreach( $result as $column )$columns[] = array('Field'=>$column['name']);
return $columns;
}
/**
* 构造函数
*
* @param dbConfig 数据库配置
*/
public function __construct($dbConfig)
{//print_r($dbConfig);exit();
if(!function_exists('sqlsrv_connect'))spError('PHP环境未安装sqlsrv函数库!');
$linkfunction = 'sqlsrv_connect';
$this->conn = $linkfunction(
$dbConfig['host'],
array(
'UID'=>$dbConfig['login'],
'PWD'=>$dbConfig['password'],
'Database'=>$dbConfig['database'],
)
) or spError("数据库链接错误 : " . print_r(sqlsrv_errors(), true));
}
/**
* 对特殊字符进行过滤
*
* @param value 值
*/
public function __val_escape($value) {
if(is_null($value))return 'NULL';
if(is_bool($value))return $value ? 1 : 0;
if(is_int($value))return (int)$value;
if(is_float($value))return (float)$value;
if(@get_magic_quotes_gpc())$value = stripslashes($value);
$search=array("\\","\0","\n","\r","\x1a","'",'"');
$replace=array("\\\\","[NULL]","\\n","\\r","\Z","''",'\"');
return '\''.str_replace($search,$replace,$value).'\'';
}
/**
* 析构函数
*/
public function __destruct()
{
@sqlsrv_close($this->conn);
}
/**
* 转换MSSQL的LIMIT语句的转换函数
*/
function translimit($sql){
if(preg_match('/ limit /i', $sql)){
//去连续空格
while(preg_match("/ /", $sql))$sql = str_replace(" "," ",$sql);
$sql_array = explode(" ",$sql);
//取得部分重要的数组索引
$i = 0;
while(isset($sql_array[$i]) && $sql_array[$i]){
if(strtolower($sql_array[$i])=="from")$from_id = $i;
if(strtolower($sql_array[$i])=="limit")$limit_id = $i;
if(strtolower($sql_array[$i])=="order")$order_id = $i;
$i++;
}
$last_id = $i-1;
$two_num = explode(",",$sql_array[$limit_id+1]);
$totle_num = $two_num[0]+$two_num[1];
$sql_return = "SELECT ";
for($i=1;$i<=$from_id;$i++){
$sql_return .= $sql_array[$i];
$sql_return .= " ";
}
$sql_return .= " ( SELECT TOP {$two_num[1]} ";
for($i=1;$i<=$from_id;$i++){
$sql_return .= $sql_array[$i];
$sql_return .= " ";
}
$sql_return .=" ( SELECT TOP {$totle_num} ";
for($i=1;$i<$limit_id;$i++){
$sql_return .= $sql_array[$i] ;
$sql_return .= " ";
}
$sql_return .= " ) AS SPTMP_MSSQL_TOTLERESULT ";
if(preg_match("/ desc /i", $sql)){
for($i=$from_id+2;$i<$limit_id;$i++){
if(strtolower($sql_array[$i]) == "desc")continue;
$sql_return .= $sql_array[$i];
$sql_return .= " ";
}
}else{
for($i=$from_id+2;$i<$limit_id;$i++){
$sql_return .= $sql_array[$i];
$sql_return .= " ";
if($i == $order_id+2)$sql_return .= " DESC ";
}
}
$sql_return .= " ) AS SPTMP_MSSQL_ALLRESULT ";
for($i=$from_id+2;$i<$limit_id;$i++){$sql_return .= $sql_array[$i] ." ";}
return $sql_return;
}else{
return $sql;
}
}
}
#4
代码是$conn=new PDO("mssql:host=localhost;dbname=user_info","sa","jiushi");
#5
我确认用户名跟密码都没错,服务器名是localhost
#6
localhost 肯定是不行的,因为 localhost 不可能作为实例名
当只有一个实例时,服务名默认为 机器名
本地虚拟的实例名是 (local)
当只有一个实例时,服务名默认为 机器名
本地虚拟的实例名是 (local)
#7
看下扩展
#8
localhost 跟***\sqlexpress这两个服务器有什么不同?
#9
需要安装驱动....
http://www.microsoft.com/download/en/details.aspx?id=8059
http://www.microsoft.com/download/en/details.aspx?id=8059
#1
不知道你的服务器名是如何写的
多实例时应用实例名,单实例时应用实例名或机器名
另外,自 2005 起,默认是不予许远程访问的
多实例时应用实例名,单实例时应用实例名或机器名
另外,自 2005 起,默认是不予许远程访问的
#2
你把连接数据库的代码贴出来看一下
#3
php 5.3以后的版本是不能用mssql了,得去微软网站下载php扩展sqlsrv加载。
还付一chm手册。这个是speedphp fk自己新增的一个类,参考参考吧
<?php
/////////////////////////////////////////////////////////////////
// SpeedPHP中文PHP框架, Copyright (C) 2008 - 2010 SpeedPHP.com //
/////////////////////////////////////////////////////////////////
/**
* db_mssql MsSQL数据库的驱动支持
*/
class db_sqlsrv {
/**
* 数据库链接句柄
*/
public $conn;
/**
* 执行的SQL语句记录
*/
public $arrSql;
/**
* 按SQL语句获取记录结果,返回数组
*
* @param sql 执行的SQL语句
*/
public function getArray($sql)
{
if( ! $result = $this->exec($sql) )return array();
//if( ! sqlsrv_num_rows($result) )return array();
$rows = array();
while($rows[] = sqlsrv_fetch_array($result,SQLSRV_FETCH_ASSOC)){}
sqlsrv_free_stmt($result);
array_pop($rows);
return $rows;
}
/**
* 返回当前插入记录的主键ID
*/
public function newinsertid()
{
$result = $this->getArray("select @@IDENTITY as sptmp_newinsert_id");
return $result[0]['sptmp_newinsert_id'];
}
/**
* 格式化带limit的SQL语句
*/
public function setlimit($sql, $limit)
{
if(!eregi(",", $limit))$limit = '0,'.$limit;
$sql .= " LIMIT {$limit}";
return $this->translimit($sql);
}
/**
* 执行一个SQL语句
*
* @param sql 需要执行的SQL语句
*/
public function exec($sql)
{
$this->arrSql[] = $sql;
if( $result = sqlsrv_query($this->conn, $sql) ){
return $result;
}else{
if( ($errors = sqlsrv_errors() ) != null)
{
$msg = '';
foreach( $errors as $error)
{
$msg .= "message: ".$error[ 'message']."\n";
}
spError("{$sql}<br />执行错误: " . $msg);
}
}
}
/**
* 返回影响行数
*/
public function affected_rows()
{
return sqlsrv_rows_affected($this->conn);
}
/**
* 获取数据表结构
*
* @param tbl_name 表名称
*/
public function getTable($tbl_name)
{
$result = $this->getArray("SELECT syscolumns.name FROM syscolumns, systypes WHERE syscolumns.xusertype = systypes.xusertype AND syscolumns.id = object_id('{$tbl_name}')");
$columns = array();
foreach( $result as $column )$columns[] = array('Field'=>$column['name']);
return $columns;
}
/**
* 构造函数
*
* @param dbConfig 数据库配置
*/
public function __construct($dbConfig)
{//print_r($dbConfig);exit();
if(!function_exists('sqlsrv_connect'))spError('PHP环境未安装sqlsrv函数库!');
$linkfunction = 'sqlsrv_connect';
$this->conn = $linkfunction(
$dbConfig['host'],
array(
'UID'=>$dbConfig['login'],
'PWD'=>$dbConfig['password'],
'Database'=>$dbConfig['database'],
)
) or spError("数据库链接错误 : " . print_r(sqlsrv_errors(), true));
}
/**
* 对特殊字符进行过滤
*
* @param value 值
*/
public function __val_escape($value) {
if(is_null($value))return 'NULL';
if(is_bool($value))return $value ? 1 : 0;
if(is_int($value))return (int)$value;
if(is_float($value))return (float)$value;
if(@get_magic_quotes_gpc())$value = stripslashes($value);
$search=array("\\","\0","\n","\r","\x1a","'",'"');
$replace=array("\\\\","[NULL]","\\n","\\r","\Z","''",'\"');
return '\''.str_replace($search,$replace,$value).'\'';
}
/**
* 析构函数
*/
public function __destruct()
{
@sqlsrv_close($this->conn);
}
/**
* 转换MSSQL的LIMIT语句的转换函数
*/
function translimit($sql){
if(preg_match('/ limit /i', $sql)){
//去连续空格
while(preg_match("/ /", $sql))$sql = str_replace(" "," ",$sql);
$sql_array = explode(" ",$sql);
//取得部分重要的数组索引
$i = 0;
while(isset($sql_array[$i]) && $sql_array[$i]){
if(strtolower($sql_array[$i])=="from")$from_id = $i;
if(strtolower($sql_array[$i])=="limit")$limit_id = $i;
if(strtolower($sql_array[$i])=="order")$order_id = $i;
$i++;
}
$last_id = $i-1;
$two_num = explode(",",$sql_array[$limit_id+1]);
$totle_num = $two_num[0]+$two_num[1];
$sql_return = "SELECT ";
for($i=1;$i<=$from_id;$i++){
$sql_return .= $sql_array[$i];
$sql_return .= " ";
}
$sql_return .= " ( SELECT TOP {$two_num[1]} ";
for($i=1;$i<=$from_id;$i++){
$sql_return .= $sql_array[$i];
$sql_return .= " ";
}
$sql_return .=" ( SELECT TOP {$totle_num} ";
for($i=1;$i<$limit_id;$i++){
$sql_return .= $sql_array[$i] ;
$sql_return .= " ";
}
$sql_return .= " ) AS SPTMP_MSSQL_TOTLERESULT ";
if(preg_match("/ desc /i", $sql)){
for($i=$from_id+2;$i<$limit_id;$i++){
if(strtolower($sql_array[$i]) == "desc")continue;
$sql_return .= $sql_array[$i];
$sql_return .= " ";
}
}else{
for($i=$from_id+2;$i<$limit_id;$i++){
$sql_return .= $sql_array[$i];
$sql_return .= " ";
if($i == $order_id+2)$sql_return .= " DESC ";
}
}
$sql_return .= " ) AS SPTMP_MSSQL_ALLRESULT ";
for($i=$from_id+2;$i<$limit_id;$i++){$sql_return .= $sql_array[$i] ." ";}
return $sql_return;
}else{
return $sql;
}
}
}
还付一chm手册。这个是speedphp fk自己新增的一个类,参考参考吧
<?php
/////////////////////////////////////////////////////////////////
// SpeedPHP中文PHP框架, Copyright (C) 2008 - 2010 SpeedPHP.com //
/////////////////////////////////////////////////////////////////
/**
* db_mssql MsSQL数据库的驱动支持
*/
class db_sqlsrv {
/**
* 数据库链接句柄
*/
public $conn;
/**
* 执行的SQL语句记录
*/
public $arrSql;
/**
* 按SQL语句获取记录结果,返回数组
*
* @param sql 执行的SQL语句
*/
public function getArray($sql)
{
if( ! $result = $this->exec($sql) )return array();
//if( ! sqlsrv_num_rows($result) )return array();
$rows = array();
while($rows[] = sqlsrv_fetch_array($result,SQLSRV_FETCH_ASSOC)){}
sqlsrv_free_stmt($result);
array_pop($rows);
return $rows;
}
/**
* 返回当前插入记录的主键ID
*/
public function newinsertid()
{
$result = $this->getArray("select @@IDENTITY as sptmp_newinsert_id");
return $result[0]['sptmp_newinsert_id'];
}
/**
* 格式化带limit的SQL语句
*/
public function setlimit($sql, $limit)
{
if(!eregi(",", $limit))$limit = '0,'.$limit;
$sql .= " LIMIT {$limit}";
return $this->translimit($sql);
}
/**
* 执行一个SQL语句
*
* @param sql 需要执行的SQL语句
*/
public function exec($sql)
{
$this->arrSql[] = $sql;
if( $result = sqlsrv_query($this->conn, $sql) ){
return $result;
}else{
if( ($errors = sqlsrv_errors() ) != null)
{
$msg = '';
foreach( $errors as $error)
{
$msg .= "message: ".$error[ 'message']."\n";
}
spError("{$sql}<br />执行错误: " . $msg);
}
}
}
/**
* 返回影响行数
*/
public function affected_rows()
{
return sqlsrv_rows_affected($this->conn);
}
/**
* 获取数据表结构
*
* @param tbl_name 表名称
*/
public function getTable($tbl_name)
{
$result = $this->getArray("SELECT syscolumns.name FROM syscolumns, systypes WHERE syscolumns.xusertype = systypes.xusertype AND syscolumns.id = object_id('{$tbl_name}')");
$columns = array();
foreach( $result as $column )$columns[] = array('Field'=>$column['name']);
return $columns;
}
/**
* 构造函数
*
* @param dbConfig 数据库配置
*/
public function __construct($dbConfig)
{//print_r($dbConfig);exit();
if(!function_exists('sqlsrv_connect'))spError('PHP环境未安装sqlsrv函数库!');
$linkfunction = 'sqlsrv_connect';
$this->conn = $linkfunction(
$dbConfig['host'],
array(
'UID'=>$dbConfig['login'],
'PWD'=>$dbConfig['password'],
'Database'=>$dbConfig['database'],
)
) or spError("数据库链接错误 : " . print_r(sqlsrv_errors(), true));
}
/**
* 对特殊字符进行过滤
*
* @param value 值
*/
public function __val_escape($value) {
if(is_null($value))return 'NULL';
if(is_bool($value))return $value ? 1 : 0;
if(is_int($value))return (int)$value;
if(is_float($value))return (float)$value;
if(@get_magic_quotes_gpc())$value = stripslashes($value);
$search=array("\\","\0","\n","\r","\x1a","'",'"');
$replace=array("\\\\","[NULL]","\\n","\\r","\Z","''",'\"');
return '\''.str_replace($search,$replace,$value).'\'';
}
/**
* 析构函数
*/
public function __destruct()
{
@sqlsrv_close($this->conn);
}
/**
* 转换MSSQL的LIMIT语句的转换函数
*/
function translimit($sql){
if(preg_match('/ limit /i', $sql)){
//去连续空格
while(preg_match("/ /", $sql))$sql = str_replace(" "," ",$sql);
$sql_array = explode(" ",$sql);
//取得部分重要的数组索引
$i = 0;
while(isset($sql_array[$i]) && $sql_array[$i]){
if(strtolower($sql_array[$i])=="from")$from_id = $i;
if(strtolower($sql_array[$i])=="limit")$limit_id = $i;
if(strtolower($sql_array[$i])=="order")$order_id = $i;
$i++;
}
$last_id = $i-1;
$two_num = explode(",",$sql_array[$limit_id+1]);
$totle_num = $two_num[0]+$two_num[1];
$sql_return = "SELECT ";
for($i=1;$i<=$from_id;$i++){
$sql_return .= $sql_array[$i];
$sql_return .= " ";
}
$sql_return .= " ( SELECT TOP {$two_num[1]} ";
for($i=1;$i<=$from_id;$i++){
$sql_return .= $sql_array[$i];
$sql_return .= " ";
}
$sql_return .=" ( SELECT TOP {$totle_num} ";
for($i=1;$i<$limit_id;$i++){
$sql_return .= $sql_array[$i] ;
$sql_return .= " ";
}
$sql_return .= " ) AS SPTMP_MSSQL_TOTLERESULT ";
if(preg_match("/ desc /i", $sql)){
for($i=$from_id+2;$i<$limit_id;$i++){
if(strtolower($sql_array[$i]) == "desc")continue;
$sql_return .= $sql_array[$i];
$sql_return .= " ";
}
}else{
for($i=$from_id+2;$i<$limit_id;$i++){
$sql_return .= $sql_array[$i];
$sql_return .= " ";
if($i == $order_id+2)$sql_return .= " DESC ";
}
}
$sql_return .= " ) AS SPTMP_MSSQL_ALLRESULT ";
for($i=$from_id+2;$i<$limit_id;$i++){$sql_return .= $sql_array[$i] ." ";}
return $sql_return;
}else{
return $sql;
}
}
}
#4
代码是$conn=new PDO("mssql:host=localhost;dbname=user_info","sa","jiushi");
#5
我确认用户名跟密码都没错,服务器名是localhost
#6
localhost 肯定是不行的,因为 localhost 不可能作为实例名
当只有一个实例时,服务名默认为 机器名
本地虚拟的实例名是 (local)
当只有一个实例时,服务名默认为 机器名
本地虚拟的实例名是 (local)
#7
看下扩展
#8
localhost 跟***\sqlexpress这两个服务器有什么不同?
#9
需要安装驱动....
http://www.microsoft.com/download/en/details.aspx?id=8059
http://www.microsoft.com/download/en/details.aspx?id=8059