2011-12-07:
经过昨天晚上的学生选择,发现教师已选学生数量和实际选择学生的数量不一致的问题(应该使用事务来管理吧?),上午排查时使用的下面的sql语句进行测试、修改:
计算每个教师已经选择的学生数
select sdchoose.TID, Count(SXH) as SJXZXSS
from sdchoose group by sdchoose.TID
显示教师实际选择和允许选择数不同的教师信息
select sdteacher.TID,sdteacher.TXM,YDXS,VRSJXZXSS.SJXZXSS
from sdteacher,VRSJXZXSS
where sdteacher.TID=VRSJXZXSS.TID and sdteacher.YDXS != VRSJXZXSS.SJXZXSS
计算已经选择导师的学生人数:
select count(SXH) as 实际选择导师的学生数 from sdchoose
(显示结果为236、275)
显示sdchoose表中所有学生学号
select * from sdchoose order by SXH
显示为已经选择导师的学生数:(在sdstudentbiye_2012中标注为选择了,但是在sdchoose中没有)
()
还不错,sdchoose表和sdstudentbiye_2012表中的数据是吻合的
修改YDXS数和SJXZXSS相同的sql语句如下:
测试:
update sdteacher
set YDXS=VRSJXZXSS.SJXZXSS
from sdteacher , VRSJXZXSS
where sdteacher.TID = VRSJXZXSS.TID and VRSJXZXSS.TID=11
2011-11-19:
DFDF6-Y768C-BJX4R-VW968-WH67Q
昨天在学校配置服务器,配置了一天,网管组要求必须用正版windows2003server、学校指定的防病毒软件,头大,
再开启2001年买的DELL PowerEdge 1750 ,那声音之响啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
今天在家里用虚拟机终于配置成功了,
把这两天碰到的注意事项回顾如下,为周一的最后工作做准备:
注意事项:
1、自己的数据库必须放到SQLServer2005的默认数据库data内,不然会报错的,说只有只读权限。。。
2、开启sqlserver2005的TCP/IP和named pipes功能
3、开启iis对framework的支持(aspnet_regiis -i -enable 这个enable参数太重要了):
iis打开aspx文件时显示无法找到该页
4、开启sa账户,这个就不用记录了,网上都是了。
5、这几个工作都做完之后,在.net中是可以连接到数据库的,应该OK了》》》》》。。。。
=============================================================================
2011-11-04:
今天在徐鹏飞的帮助下把asp.net实例:毕业选导师功能给测试、调配好了,为了防止以后忘掉,把里面的重点给记录下来。
1、web.config.xml
<connectionStrings>
<add name="ConnectionString" connectionString="Data Source=PC-201109190753\SQLEXPRESS;Initial Catalog=实例数据库.MDF;Persist Security Info=True;User ID=sa;password=123456"/>
<add name="ConnectionString2" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\sd2008_Data.MDF;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
2、更新sdchoose表的时间
UPDATE sdchoose
SET TIME = GETDATE()
WHERE (SXH = 2008058105)
3、"insert into sdchoose(TID,SXH,TIME) values(‘16’,’2008058104’,’2011-11-2 20:35:06’)"
UPDATE sdstudentbiye_2012 SET SXZ='y' where SXH=2008058104
4、SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问
http://www.cnblogs.com/wayne-ivan/archive/2008/01/07/1028759.html
SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
5、excel数据的导入导出(注意冻结窗口)
insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',Sheet1$)
SELECT 学号 as A, 姓名 as B, 性别 as C, 身份证号 as D, 专业 as E, 系别 as F
FROM stu_2008
WHERE (系别 = '资讯管理系') AND (专业 NOT LIKE '%专科%')
把excel sheet1 第一行设为冻结窗口试试(第一行填上列名)就不会报错了
INSERT INTO sdstudentbiye_2012_2
(SXH, SXM, SXB, SZY, SXIBIE)
SELECT A, B, C, E, F
FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0',
'Excel 5.0;HDR=YES;DATABASE=c:\test.xls', sheet1$) AS derivedtbl_1
6、随机密码的产生
public class RandomStr
{
public const string myVersion = "1.2";
/********
* Const and Function
* ********/
private static readonly int defaultLength = 8;
private static int GetNewSeed()
{
byte[] rndBytes = new byte[4];
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetBytes(rndBytes);
return BitConverter.ToInt32(rndBytes, 0);
}
/********
* getRndCode of all char .
* ********/
private static string BuildRndCodeAll(int strLen)
{
System.Random RandomObj = new System.Random(GetNewSeed());
string buildRndCodeReturn = null;
for (int i = 0; i < strLen; i++)
{
buildRndCodeReturn += (char)RandomObj.Next(33, 125);
}
return buildRndCodeReturn;
}
public static string GetRndStrOfAll()
{
return BuildRndCodeAll(defaultLength);
}
public static string GetRndStrOfAll(int LenOf)
{
return BuildRndCodeAll(LenOf);
}
/********
* getRndCode of only .
* ********/
private static string sCharLow = "abcdefghijklmnopqrstuvwxyz";
private static string sCharUpp = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private static string sNumber = "0123456789";
private static string BuildRndCodeOnly(string StrOf, int strLen)
{
System.Random RandomObj = new System.Random(GetNewSeed());
string buildRndCodeReturn = null;
for (int i = 0; i < strLen; i++)
{
buildRndCodeReturn += StrOf.Substring(RandomObj.Next(0, StrOf.Length - 1), 1);
}
return buildRndCodeReturn;
}
public static string GetRndStrOnlyFor()
{
return BuildRndCodeOnly(sCharLow + sNumber, defaultLength);
}
public static string GetRndStrOnlyFor(int LenOf)
{
return BuildRndCodeOnly(sCharLow + sNumber, LenOf);
}
public static string GetRndStrOnlyFor(bool bUseUpper, bool bUseNumber)
{
string strTmp = sCharLow;
if (bUseUpper) strTmp += sCharUpp;
if (bUseNumber) strTmp += sNumber;
return BuildRndCodeOnly(strTmp, defaultLength);
}
public static string GetRndStrOnlyFor(int LenOf, bool bUseUpper, bool bUseNumber)
{
string strTmp = sCharLow;
if (bUseUpper) strTmp += sCharUpp;
if (bUseNumber) strTmp += sNumber;
return BuildRndCodeOnly(strTmp, LenOf);
}
}
public class radNum
{
string codeSerial = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,M,L,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,0,1,2,3,4,5,6,7,8,9";//这里添加你要随机产生的字符,当然你可以加些数字机去,我在这里只产生大写和小写字母。
//以下东西很简单了,仔细看看就能明白
public string CodeSerial
{
get { return codeSerial; }
set { codeSerial = value; }
}
public string CreateRadNum(int codeLen)
{
int Length = 4;
if (codeLen == 0)
{
codeLen = Length;
}
string[] arr = CodeSerial.Split(',');
string code = "";
int randValue = -1;
Random rand = new Random(unchecked((int)DateTime.Now.Ticks));
for (int i = 0; i < codeLen; i++)
{
randValue = rand.Next(0, arr.Length - 1);
code += arr[randValue];
}
return code;
}
public string RandomNum(int n) //
{
string strchar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
string[] VcArray = strchar.Split(',');
string VNum = ""; //
int temp = -1; //记录上次随机数值,尽量避免产生几个一样的随机数
//采用一个简单的算法以保证生成随机数的不同
Random rand = new Random();
for (int i = 1; i < n + 1; i++)
{
if (temp != -1)
{
rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));
}
int t = rand.Next(61);
if (temp != -1 && temp == t)
{
return RandomNum(n);
}
temp = t;
VNum += VcArray[t];
}
return VNum;//返回生成的随机数
}
}
public partial class sd_changestupwd : System.Web.UI.Page
{
BaseClass BaseClass1 = new BaseClass();
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string strsql = "SELECT * from sdstudentbiye_2012";
DataTable dt = new DataTable();
dt = BaseClass1.ReadTable(strsql);
foreach (DataRow row in dt.Rows)
{
string sql2 = "UPDATE sdstudentbiye_2012 SET SPWD ='" + RandomStr.GetRndStrOnlyFor(6) +"'" + " where SXH=" + row["SXH"].ToString().Trim();
BaseClass1.execsql(sql2);
}
}
}
7、.netframework的注册:
虽然在IIS里面可以进行下面的设置,但是如果不进行framework的注册,仍然会报错的。
# cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
#aspnet_regiis -i
开始安装 ASP.NET (2.0.50727)。
.............
ASP.NET (2.0.50727)安装完毕。
安装程序检测到操作过程中出现了一些错误。有关详细信息,请查看安装程序日志文件 C:\
DOCUME~1\ADMINI~1\LOCALS~1\Temp\ASPNETSetup_00005.log
8、Server Application Error
9、Logon failure: user account restriction. Possible reasons are blank passwords not allowed, logon hour restrictions, or a policy
i had the same problem. i got this solved. go to run type regedit.exe
then go here HKLM\System\CurrentControlSet\Control\Lsa\limitblankpassworduse
change from 1 to 0
Thank you
Also I found another solution:
goto start->run->control userpasswords2
you can see IUSR_MYSTATION user which is Guest user that could be an IIS user
Reset password to anything except blank... DONE.
10、SQL server用户权限
新建一个用户:sdzxx,
a、需要去掉常规中的强制密码过期
b、用户映射-》指定对应数据库为db_owner