扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
sqlserver在运行时默认是没有内存占用限制的,除非你设置了sqlserver服务器的内存使用数。在企业管理器服务器的节点处右击,选择”属性“,然后查看”内存“选项卡,将内存占用设为无限制。同时,如果文件很大,需要足够的日志来记录,数据库的日志文件大小可以暂时设置为无上限,之后再进行数据库收缩。
创新互联建站是专业的诸暨网站建设公司,诸暨接单;提供做网站、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行诸暨网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
如果上面的方法不奏效,那就把你的sql文件进行分割吧,分割成比较小的几个部分,依次执行绝对没问题
:)
服务器内存不足了。
你的数据库查询消耗过多内存,或者是有其他的应用程序装在服务器上,占用了过多内存,还有你不要开启AWE,这个在03的系统上有很大的限制。让数据库自动分配内存吧。
用SQLPROFILER监视你的查询,时间超过2秒的查询,然后尝试优化它们。
1、导入命名空间
using System.Data.SqlClient; //连接SQLServer 数据库专用
2、创建连接
SqlConnection lo_conn = New SqlConnection("Server=服务器名字或IP;Database=数据库名字;uid=用户名;pwd=密码");
3、打开连接,第2步并没有真正连接数据库
lo_conn.Open(); //真正与数据库连接
4、向数据库发送SQL命令要使用SqlCommand:
SqlCommand lo_cmd = new SqlCommand(); //创建命令对象
lo_cmd.CommandText = "这里是SQL语句"; //写SQL语句
lo_cmd.Connection = lo_con; //指定连接对象,即上面创建的
5、处理SQL命令或返回结果集
lo_cmd.ExecuteNonQuery(); //这个仅仅执行SQL命令,不返回结果集,实用于建表、批量更新等不需要返回结果的操作。
SqlDataReader lo_reader = lo_cmd.ExecuteReader();//返回结果集
6、以数据集的方式反回结果集
SqlDataAdapter dbAdapter = new SqlDataAdapter(lo_cmd); //注意与上面的区分开
DataSet ds = new DataSet(); //创建数据集对象
dbAdapter.Fill(ds); //用返回的结果集填充数据集,这个数据集可以被能操作数据的控件DataBind
7、关闭连接
lo_conn.Close();
外键是用来实现“引用完整性”的,说白了就是一种约束,不能用来传值。
可以选择触发器或存储过程。
如果两个表字段相同可以用触发器:
CREATE TRIGGER trigger_AToB on A
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO A(a,b,c) SELECT a,b,c FROM inserted
INSERT INTO B(a,b,c) SELECT a,b,c FROM inserted
END
GO
INSERT INTO a(a,b,c)VALUES('aaa','aaa','aaa')
在查询分析器里执行上面的语句后,向A表添加数据会同时向B表添加。触发器比较方便,缺点是,一旦B表被删除了,向A表添加数据会报错。
存储过程就比较自由了:
CREATE PROC proc_InsertAToB
@a VARCHAR(10),
@b VARCHAR(20),
@c VARCHAR(30)
as
INSERT INTO A(a,b,c)VALUES(@a,@b,@c)
INSERT INTO B(a,b,c)VALUES(@a,@b,@c)
表B的字段和表A不一样也没关系,需要的话,可以再根据需要向存储过程添加参数。
使用的时候不再用INSERT INTO了,用:
EXECUTE proc_InsertAToB 'aaa','aaa','aaa'就可以。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流