问题一:
已成功与服务器建立连接 但是在登录过程中发生错误。 provider 共享内存提供程序 error 0 管道的另一端上无任何进程。 .

解决一:

首先,选中服务器(右键)->属性 ->安全性->服务器身份验证修改为"SQL SERVER和WINDOWS身份验证模式"。
其次,展开服务器上的"安全性"->登陆名->选中SA登陆帐号(右键)->状态->登陆修改为启用 。
最后,打开‘程序’-‘所有程序’-‘Microsoft SQL Server 20XX ’-‘配置工具’-‘SQL Server 配置管理器’,在弹出的窗体中,找到‘SQL Server 20XX 网络配置’,把‘MSSQLSERVER的协议’下的“Named Pipes”和“TCP/IP”启动,然后重新启动Microsoft SQL Server 20XX。

 

问题二:
sql server 附加数据库错误:尝试打开或创建物理文件。

解决二:
1 所有有程序-SQL Server 20XX-配置工具-"SQL Server Configuration Manager",点击"SQL Server 20XX 服务",右边会显示出用户,右击你的用户(如sa)属性,内置帐户选择"Local System",点击重新启动就OK了
2 附加后发现数据库属性为只读 解决方法为:
1)、打开 开始→程序→Microsoft SQL Server 20XX→配置工具→SQL Server 配置管理器, 打开SQL Server SQLEXPRESS 的属性.在内置帐号处,把“网络服务”改成“本地系统”,重新启动SQL Server 20XX Express 后,再附加数据库一切正常。
2)、打开SqlServer 20XX ,在只读的数据库上右击选择属性,选中属性窗口左边"选择页"下面的"选项",在窗口右边将“数据库为只读”改为false ,点击确定即可。
总结:之所以附加上的数据库为“只读”,是因为启动SQL Server 的默认的启动帐号“网络服务”对所附加(Attach)的数据库文件的权限不够造成的。

 

问题三:


在做项目中,使用了float类型来定义一些列,如:Price,但是发现了很多问题
1、当值的位数大于6位是float型再转varchar型的时候会变为科学技术法显示
    此时只好将float型转换成numeric型,再转换成varchar
2、float型变量在存入值时,有时值得大小会发生改变。这个现象发生在对报价保存时,如:保存一个3.8,但到了数据库中变成了3.80001124或3.79998999等

解决三:
在SqlServer的帮助中是这样描述float类型的:用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。
所以今后这个类型一定要慎用。


decimal 数据类型最多可存储 38 个数字,所有数字都能够放到小数点的右边。decimal 数据类型存储了一个确定的数字表达法;没有存储值的近似值。

定义 decimal 的列、变量和参数的两种特性如下: p 指定精度或对象能够控制的数字个数。s 指定可放到小数点右边的小数位数或数字个数。p 和 s 必须遵守以下规则:0 <= s <= p <= 38。

numeric 和 decimal 数据类型的默认最大精度值是 38。在 Transact-SQL 中,numeric 与 decimal 数据类型在功能上等效。

float 和 real 数据类型被称为近似的数据类型。在近似数字数据类型方面,float 和 real 数据的使用遵循 IEEE 754 标准。

近似数字数据类型并不存储为多数数字指定的精确值,它们只储存这些值的最近似值。在很多应用程序中,指定值与存储值之间的微小差异并不明显。但有时这些差异也值得引起注意。由于 float 和 real 数据类型的这种近似性,当要求精确的数字状态时,比如在财务应用程序中,在那些需要舍入的操作中,或在等值核对的操作中,就不使用这些数据类型。这时就要用 integer、decimal、money 或 smallmone 数据类型。