- 在您要从远程计算机连接到的 SQL Server 实例上启用远程连接。
- 打开 SQL Server Browser 服务。
- 配置防火墙以允许与 SQL Server 和 SQL Server Browser 服务相关的网络通讯。
若要在 SQL Server 2005 实例上启用远程连接并打开 SQL Server Browser 服务,请使用 SQL Server 2005 外围应用配...
为 SQL Server 2005 Express Edition 或 SQL Server 2005 Developer Edition 启用远程连接
必须为要从远程计算机连接到的每个 SQL Server 2005 实例启用远程连接。为此,请按照下列步骤操作:- 单击“开始”,依次指向“程序”、“Microsoft SQL Server 2005”和“配置工具”,然后单击“SQL Server 外围应用配置器”。
- 在“SQL Server 2005 外围应用配置器”页上,单击“服务和连接的外围应用配置器”。
- 在“服务和连接的外围应用配置器”页上,展开“数据库引擎”,依次单击“远程连接”和“本地连接和远程连接”,单击适用于您的环境的相应协议,然后单击“应用”。
注意:请在接收到以下消息时单击“确定”: - 在“服务和连接的外围应用配置器”页上,展开“数据库引擎”,依次单击“服务”和“停止”,等待 MSSQLSERVER 服务停止,然后单击“启动”以重新启动 MSSQLSERVER 服务。
启用 SQL Server Browser 服务
如果您是通过使用实例名称来运行 SQL Server 2005 并且在连接字符串中没有使用特定的 TCP/IP 端口号,则必须启用 SQL Server Browser 服务以允许远程连接。例如,使用 <计算机名>\SQLEXPRESS 的默认实例名称安装的 SQL Server 2005 Express。不管您正在运行多少个 SQL Server 2005 实例,只需要启用一次 SQL Server Browser 服务。若要启用 SQL Server Browser 服务,请执行以下步骤。重要说明:这些步骤可能会增加您的安全风险。这些步骤还可能导致您的计算机或网络更易于受到恶意用户或恶意软件(如病毒)的攻击。我们之所以推荐本文介绍的这一过程,是为了使程序能够按照设计意图运行,或者为了实现特定的程序功能。我们建议在进行这些更改之前,充分考虑在您的特定环境中实施这一过程可能带来的风险。如果您选择实施此过程,请采用任何适当的附加步骤以保护您的系统。我们建议只有确实需要这一过程时才使用它。
- 单击“开始”,依次指向“程序”、“Microsoft SQL Server 2005”和“配置工具”,然后单击“SQL Server 外围应用配置器”。
- 在“SQL Server 2005 外围应用配置器”页上,单击“服务和连接的外围应用配置器”。
- 在“服务和连接的外围应用配置器”页上,单击“SQL Server Browser”,在“启动类型”中单击“自动”选项,然后单击“应用”。
注意:在单击“自动”选项后,每次启动 Microsoft Windows 时将自动启动 SQL Server Browser 服务。 - 单击“启动”,然后单击“确定”。
- SQL Server Browser 服务
- 连接到 SQL Server 数据库引擎
- 客户端网络配置
在 Windows 防火墙中创建例外
这些步骤适用于 Windows XP Service Pack 2 (SP2) 和 Windows Server 2003 中包含的 Windows 防火墙版本。如果您使用的是不同的防火墙系统,请参阅相应的防火墙文档以了解更多信息。如果在运行 SQL Server 2005 的计算机上运行防火墙,将会阻止访问 SQL Server 2005 的外部连接,除非 SQL Server 2005 和 SQL Server Browser 服务可以通过防火墙进行通信。必须为每个要接受远程连接的 SQL Server 2005 实例创建一个例外,并为 SQL Server Browser 服务创建一个例外。
在安装 SQL Server 2005 的程序文件时,SQL Server 2005 会使用一个实例 ID 作为路径的一部分。若要为每个 SQL Server 实例创建一个例外,必须确定正确的实例 ID。若要获取实例 ID,请执行以下步骤:
- 单击“开始”,依次指向“程序”、“Microsoft SQL Server 2005”和“配置工具”,然后单击“SQL Server 配置管理器”。
- 在“SQL Server 配置管理器”中,单击右窗格中的“SQL Server Browser 服务”,右键单击主窗口中的实例名称,然后单击“属性”。
- 在“SQL Server Browser 属性”页上,单击“高级”选项卡,定位到属性列表中的实例 ID,然后单击“确定”。
在 Windows 防火墙中为 SQL Server 2005 创建例外
若要在 Windows 防火墙中为 SQL Server 2005 创建例外,请执行以下步骤:- 在 Windows 防火墙中,单击“例外”选项卡,然后单击“添加程序”。
- 在“添加程序”窗口中,单击“浏览”。
- 单击 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe 可执行程序,单击“打开”,然后单击“确定”。
注意:上述路径可能会根据 SQL Server 2005 的安装位置而不同。MSSQL.1 这个占位符代表的是您在前面过程的步骤 3 中获得的实例 ID。 - 对于每个需要为其创建例外的 SQL Server 2005 实例,重复步骤 1 到步骤 3。
在 Windows 防火墙中为 SQL Server Browser 服务创建例外
若要在 Windows 防火墙中为 SQL Server Browser 服务创建例外,请执行以下步骤:- 在 Windows 防火墙中,单击“例外”选项卡,然后单击“添加程序”。
- 在“添加程序”窗口中,单击“浏览”。
- 单击 C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe 可执行程序,单击“打开”,然后单击“确定”。
注意:上述路径可能会根据 SQL Server 2005 的安装位置而不同。
解决方法:
你可能连接的数据库是SQL Server 2005 Express Edition,从"开始菜单"调出"配置工具"中的"SQL Server 外围应用配置器".然后单击"服务和连接外围应用配置器",选择数据库实例(默认是"SQLEXPRESS",选择database Engine的"远程连接"中的"本地连接和远程连接(用TCP/IP)",这样即可打开SQL Server 2005的远程连接(默认不允许).
其实你可以
配置文件:
程序调用时:
SqlConnection sqlCon = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["testDBConnectionString"].ToString());//testDBConnectionString
或都直接生成connection:
SqlConnection sqlCon = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=D:\\wwwroot\\sszTest1\\App_Data\\testDB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")
只要连接成功,你再生成DataSource应该不成问题.
在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: SQL 网络接口, error: 26 - 定位指定的服务器实例时出错)
首先请确认SQL SERVER EXPRSS已安装到本地计算机上,并且SQL SERVER (SQLEXPRESS)服务已经成功启动。如果问题仍然存在,可以尝试应打开“SQL Server 外围应用配置器”,选择“服务和连接的外围应用配置器”,然后将“远程连接”配置为“同时使用 TCP/IP 和 named pipes”
由于启动用户实例的进程时出错,导致无法生成 SQL Server 的用户实例。该连接将关闭。
将连接字符串中的“User Instance=True”修改为“User Instance=False”即可。
相关参考文章请参阅
《非管理员用户实例》
无法将文件 'X:\Website\App_Data\Database.mdf' 作为数据库 ''. 附加。当前命令发生了严重错误。应放弃任何可能产生的结果。
需要为X分区以及X分区的子文件夹和文件分配Users组的“读取”权限。
尝试为文件 X:\Website\App_Data\Database.mdf 附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中。
首选要确认已经为X分区以及X分区的子文件夹和文件分配了Users组的“读取”权限。如果问题仍然存在,请使用SQL Server Management Studio连接到SQLEXPRESS数据库实例,检查是否有名称是“Database”的数据库存在。如果有,分离同名数据库即可。
我就遇到过这个问题,其实为分区根目录加上IIS_WPG用户组的“列出文件夹/读取数据”的权限就可以
无法打开用户默认数据库。登录失败。用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败。
数据库文件Database.mdf 的读写权限被设置成只有NETWORK SERVICE才具有。解决方法是先停止掉SQL SERVER (SQLEXPRESS)服务,然后从父项集成权限,再次启动SQL SERVER (SQLEXPRESS)服务即可。
安装过程中,SQL Server 数据库引擎设置为 Windows 身份验证模式或 SQL Server 和 Windows 身份验证模式。本主题介绍如何在安装后更改安全模式。
如果在安装过程中选择“Windows 身份验证模式”,则 sa 登录名将被禁用。如果稍后将身份验证模式更改为“SQL Server 和 Windows 身份验证模式”,则 sa 登录名仍处于禁用状态。若要启用 sa 登录帐户,请使用 ALTER LOGIN 语句。
安全说明: |
|---|
| sa 帐户是一个广为人知的 SQL Server 帐户,并且经常成为恶意用户的攻击目标。除非您的应用程序需要使用 sa 帐户,否则请不要启用它。为 sa 登录名使用一个强密码非常重要。 |
sa 登录名只能使用 SQL Server 身份验证连接到服务器。
更改安全身份验证模式
从 SQL Server Management Studio 重新启动 SQL Server
使用 Transact-SQL 启用 sa 登录帐户 SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["swosConnectionString"].ToString());
SqlCommand cmd = new SqlCommand("", con);
cmd.CommandText = "SELECT [ID], [tag] FROM [XsdnTag] where [abc]=@abc order by [order] desc";
//cmd.Parameters.AddWithValue("@ID", id);
//cmd.Parameters.Add("@abc", SqlDbType.NVarChar);
//cmd.Parameters["@abc"].Value = "sssss";
SqlParameter pText=new SqlParameter("@Text",mytext);
cmd.Parameters.Add(pText);
try
{
con.Open();
cmd.ExecuteNonQuery();
//SqlDataReader dr = cmd.ExecuteReader();
//while (dr.Read())
//{
// ddddd = dr["ID"].ToString();
//}
//dr.Close();
}
catch (Exception ex)
{
zErrorLog.catchError(Request.Url.ToString(), ex.Message);
}
finally
{
con.Close();
}
设置目录权限
network service
SQL Server 外围应用配置器:
-服务和连接的外围应用配置器
-远程连接
-同时使用 ICP/IP 和 named pipes
SQL Server Management Studio:
-Windows 身份验证 登录
-本机服务器右键属性
-安全性 改验证模式
-登录名 可用sa,可新建 状态 设置登录启用
有时候,我们在调试 SQL Server 2005 的程序会出现:
Generating user instances in SQL Server is disabled. Use sp_configure 'user instances
enabled' to generate user instances这个错误,这是因为默认使用了 user instance,可以通过两种途径解决:(推荐 途径一的方法b)
一、改环境配置
方法a:
1. run=>cmd.exe
2. 输入 sqlcmd
3. 输入 sp_configure 'user instances enabled','1'
方法b:
使用 SQL Server Management Studio 工具,附加数据库,添加查询:
exec sp_configure 'user instances enabled',1
reconfigure二、改连接字符串
把所有连接字符串中的 user instace=true; 去掉,包括 %systemroot%microstoft.net/[version]/framework/config/ 下的几个 Config 文件中的连接字符串
Group by 是SQL Server 中常用的一种语法,语法如下:
[ GROUP BY [ ALL ] group_by_expression [ ,...n ]
[ WITH { CUBE | ROLLUP } ]
] 1、最常用的就是这种语法,如下:
Select CategoryID, AVG(UnitPrice), COUNT(UnitPrice)
FROM dbo.Products Where UnitPrice > 30
GROUP BY CategoryID
ORDER BY CategoryID DESC
这个语句查询出,所有产品分类的产品平均单价,单价计数。并且单价在 30 以上的记录。
2、再看看这种语法,如下:
Select CategoryID, AVG(DISTINCT UnitPrice), COUNT(DISTINCT UnitPrice)
FROM dbo.Products Where UnitPrice > 30
GROUP BY CategoryID
ORDER BY CategoryID DESC使用 DISTINCT 的时候,将会去除重复的价格平均单价。
3、如果希望在分类统计之后,再使用条件过滤,下面的语句可以做为参数:Select CategoryID, SUM(UnitPrice) AS SumPrice
FROM dbo.Products
GROUP BY CategoryID
HAVING SUM(UnitPrice) > 300HAVING 与 Where 语句类似,Where 是在分类之前过滤,而 HAVING 是在分类之后过滤。
它和 Where 一样使用 AND、OR、NOT、LIKE 组合使用。
4、如果希望再在分类统计中,添加汇总行,可以使用以下语句:
Select CategoryID, SUM(UnitPrice), GROUPING(CategoryID) AS 'Grouping'
FROM dbo.Products
GROUP BY CategoryID WITH ROLLUP
Grouping 这一列用于标识出哪一行是汇总行。
它使用 ROLLUP 操作添加汇总行。
5、如果使用 WITH CUBE 将会产生一个多维分类数据集,如下:
Select CategoryID, SupplierID, SUM(UnitPrice) AS SumPrice
FROM dbo.Products
GROUP BY CategoryID, SupplierID WITH CUBE
它会产生一个交叉表,产生所有可能的组合汇总。
6、使用 ROLLUP CUBE 会产生一个 NULL 空值,可以使用以下语法解决,如下:
Select CASE WHEN (GROUPING(SupplierID) = 1) THEN '-1'
ELSE SupplierID
END AS SupplierID,
SUM(UnitPrice) AS QtySum
FROM dbo.Products
GROUP BY SupplierID WITH CUBE它首先检查当前行是否为汇总行,如果是就可以设置一个值,这里设置为 '-1' 。
| 成员名称 | 说明 | |
|---|---|---|
![]() |
BigInt | Int64。64 位的有符号整数。 |
![]() |
Binary | Byte 类型的 Array。二进制数据的固定长度流,范围在 1 到 8,000 个字节之间。 |
![]() |
Bit | Boolean。无符号数值,可以是 0、1 或 空引用(在 Visual Basic 中为 Nothing)。 |
![]() |
Char | String。非 Unicode 字符的固定长度流,范围在 1 到 8,000 个字符之间。 |
![]() |
DateTime | DateTime。日期和时间数据,值范围从 1753 年 1 月 1 日到 9999 年 12 月 31 日,精度为 3.33 毫秒。 |
![]() |
Decimal | Decimal。固定精度和小数位数数值,在 -10 38 -1 和 10 38 -1 之间。 |
![]() |
Float | Double。-1.79E +308 到 1.79E +308 范围内的浮点数。 |
![]() |
Image | Byte 类型的 Array。二进制数据的可变长度流,范围在 0 到 2 31 -1(即 2,147,483,647)字节之间。 |
![]() |
Int | Int32。32 位的有符号整数。 |
![]() |
Money | Decimal。货币值,范围在 -2 63(即 -922,337,203,685,477.5808)到 2 63 -1(即 +922,337,203,685,477.5807)之间,精度为千分之十个货币单位。 |
![]() |
NChar | String。Unicode 字符的固定长度流,范围在 1 到 4,000 个字符之间。 |
![]() |
NText | String。Unicode 数据的可变长度流,最大长度为 2 30 - 1(即 1,073,741,823)个字符。 |
![]() |
NVarChar | String。Unicode 字符的可变长度流,范围在 1 到 4,000 个字符之间。如果字符串大于 4,000 个字符,隐式转换会失败。在使用比 4,000 个字符更长的字符串时,请显式设置对象。 |
![]() |
Real | Single。-3.40E +38 到 3.40E +38 范围内的浮点数。 |
![]() |
SmallDateTime | DateTime。日期和时间数据,值范围从 1900 年 1 月 1 日到 2079 年 6 月 6 日,精度为 1 分钟。 |
![]() |
SmallInt | Int16。16 位的有符号整数。 |
![]() |
SmallMoney | Decimal。货币值,范围在 -214,748.3648 到 +214,748.3647 之间,精度为千分之十个货币单位。 |
![]() |
Text | String。非 Unicode 数据的可变长度流,最大长度为 2 31 -1(即 2,147,483,647)个字符。 |
![]() |
Timestamp | Byte 类型的 Array。自动生成的二进制数,并保证其在数据库中唯一。timestamp 通常用作对表中各行的版本进行标记的机制。存储大小为 8 字节。 |
![]() |
TinyInt | Byte。8 位的无符号整数。 |
![]() |
Udt | SQL Server 2005 用户定义的类型 (UDT)。 |
![]() |
UniqueIdentifier | Guid。全局唯一标识符(或 GUID)。 |
![]() |
VarBinary | Byte 类型的 Array。二进制数据的可变长度流,范围在 1 到 8,000 个字节之间。如果字节数组大于 8,000 个字节,隐式转换会失败。在使用比 8,000 个字节大的字节数组时,请显式设置对象。 |
![]() |
VarChar | String。非 Unicode 字符的可变长度流,范围在 1 到 8,000 个字符之间。 |
![]() |
Variant | Object。特殊数据类型,可以包含数值、字符串、二进制或日期数据,以及 SQL Server 值 Empty 和 Null,后两个值在未声明其他类型的情况下采用。 |
![]() |
Xml | XML 值。使用 GetValue 方法或 Value 属性获取字符串形式的 XML,或通过调用 CreateReader 方法获取 XmlReader 形式的 XML。 |
MS SQL Server 2000 系统数据类型:
(来源于SQL查询分析器)
bigint 从 -2^63 到 2^63-1 之间的 integer (整数)数据
binary 定长的binary数据,最长为8,000字节
bit integer数据,值为1或0
char 定长的非unicode character数据,长度为8,000个字符
cursor 含有对游标的引用的变量或存储过程OUTPUT参数所采用的数据类型
datetime date和time数据,从1753年1月1日到9999年12月31日
decimal 定点精度和小数的numeric数据,从-10^38-1到10^38-1之间
float 浮点精度数字数据,从-1.79E+308到1.79E+308之间
image 长度可变的binary数据,最长为2^31-1字节
int 从-2^31到2^31-1之间的integer(整数)数据
money monetary数据值,从-2^63到2^63-1,准确度为货币单位的千分之一
nchar 定长的unicode数据,长度为4,000个字符
ntext 长度可变的unicode数据,最长为2^30-1个字符
numeric decimal的同义词
nvarchar 长度可变的unicode数据,最长为4,000字符
real 浮点精度数字数据,从-3.40E+38到3.40E+38之间
rowversion 数据库范围内的唯一号
smalldatetime date和time数据,从1900年1月1日到2079年6月6日
smallint 从-2^15到2^15-1之间的integer数据
smallmoney monetary数据值,-214,748.3648到+214,748.3647之间
sql_variant 可存储多种SQL Server支持的数据类型的值的数据类型,
但不存储text, ntext, timestamp和sql_variant类型的值
sysname 系统提供的用户定义的数据类型,为nvarchar(128)的同义词
table 一种特殊的数据类型,可用于为以后进行处理而存储结果集
text 长度可变的非unicode数据,最长为2^31-1个字符
timestamp 数据库范围内的唯一号
tinyint 从0到255之间的integer数据
uniqueidentifier全局唯一标识符(GUID)
varbinary 长度可变的binary数据,最长为2^31-1字节
varchar 长度可变的非unicode数据,最长为8,000个字符
老总总会随时扔台他朋友的本本叫我杀个毒装个软件什么的,很多都是新机预装 Vista。接触多了终于心痒痒升级自己的 Windows。其实一直想装的,可惜我的光驱只能 CD 刻录,而且跑遍整个萧山都找不到有 Vista 光盘卖,装双系统么又花时间又占空间。幸好一凡家有台记录机,所以趁周末去刻了张盘。第二天急匆匆地跑去公司,花了两个多小时把本本上将40G的东西传到服务器上备份,然后重新分区安装。
之前是有看过远景上关于安装方面的贴子,生怕中间出问题又上不了网就麻烦了。不过还是出问题了,在复制完文件后自动重启,就出现下面的错误:
...
If you do not have this disc, contact your system administrator or computer maufacturer for assistance
File: \windows\system32\drivers\tcpip.sys
status: 0x0000221
Info: Windows failed to load because a critical system driver is missing, or corrupt.
我没动过任何硬件,出现这样的错误很是摸不着头脑,想到可能的原因有:刻盘时出了问题;需要 SATA 硬盘驱动;内存不兼容……没办法,还是先找台电脑上网查查吧。身边的服务器没无线网卡不能上网,尝试在服务器安装 Nokia PC 套件还不兼容 Windows server 2003,不支持蓝牙连接。还是去其它办公室借电脑上好了。哎,不出我所料,又被逮到帮他们杀毒!汗。在网上找了半天没搜出个结果来,看来用 Vista 的人还不多,出现我的问题的人更少,我只搜到 error info 跟我相同,但 file 不同的贴子,还是没有回答的。
回来,装了两遍还是出现同样的错误,火了,先装个 XP,在 XP 下试试。漫长的等待是用电脑报打发的。。。
OK,XP 装在 D 盘,想检查是不是 SATA 硬盘的缘故,想装了 XP 应该已经有驱动了,就重起通过光盘安装 Vista 到 C 盘,啊哦,老错误。(高手别笑我,这步我都觉得荒谬)
晕,忘了 boot.ini 是在 C 盘的,进不了 XP 了,又再装了遍 XP 到 D 盘。怕了怕了,还是用镜像文件装吧。也不去研究什么原因导致的了,哎不是我的风格,可是时间宝贵呐。
老老实实装完 XP 又用虚拟光驱装入镜像,再次安装 Vista,哎,终于让我揭开她的面纱了!
一天就这么过去了,第二天继续。
Vista 已经基本解决驱动问题了,很省事,不过我还是去 HP 英文官网下了专用的驱动程序。
嗯,开始安装程序。其实 Vista 的 UAC 确实挺烦人的,特别是安装程序的时候,不过我是习惯了“用管理员身份运行”,可突然的黑屏一闪还是会让习惯的人慌一下。
在安装 .msi 程序的时候有时候会提示安装不正常,您的权限需要提升之类的错误,但无法在右键菜单找到“用管理员身份运行”项,我是这么解决的:建一个后缀名为 .cmd 的文件,写入内容:“msiexec /i C:\msi文件的地址”。然后“用管理员身份运行”这个 .cmd 文件就行了。
装完常用软件开始安装 VS 这个大家伙了。
给 C 盘分的 20 个 G 已经用了 12 个了,之前用的是 VS2005,还没装过 VS2008,所以不知道要占多少空间。前几天看过一篇文章是关于在 Vista 下安装 VS 和 SQL Server 的,作者提到的先装 VS 后装 SSMS 出错误的情况,前车之鉴,我先装了 SSMS。
最头痛的要算 IIS7 了。装入 Vista 镜像,控制面板-程序-打开或关闭 Windows 功能,参照一篇文章勾选了相关的安装项,见文。虽然我不需要在 VS2005 下调试程序,但是我暂时不想把程序框架从 2.0 升到 3.5,这几天全国范围寻找 .net 3.5 的空间商未果,真想自己弄台服务器卖空间,早起的鸟应该会有虫吃。我觉得空间商是怕技术这关,毕竟新技术万一出问题很有可能一下子解决不了,作为一个运营商就有可能被要求赔偿损失或吃官司之类的。扯远了。。。
装完 IIS7,试着架设我的 2.0 网站,经典应用程序池,身份验证,一切配置完毕,结果运行时还是出现了“IIS Worker Process 已停止工作”的对话框,偶尔出现,而且出现几次后,应用程序池就自动关闭了,用纯 HTML 站测试也一样,又把 IIS 卸了装,还是一样。试了两天没结果,希望各位达人指点!

这几天用 Vista 眼睛受不了,漂亮的外表还是很伤人的,就跟玫瑰有刺同一个道理。Areo,雅黑,梦幻桌面,让我的眼睛云里雾里的,害我拼命滴眼药水。
不过总的来说,I love vista! 推荐配置不错的朋友可以考虑升级。
安全说明: