|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
有理由相信是能提供更出色的性能。很多平台无法支持复杂的编译器,因此需要二次编译来减少本地编译器的复杂度。当然可能做不到java编译器那么简易。我们晓得,如视图中的基本表的字段产生了变更,则视图大概会变不成用。假如我们的数据库中界说了大批的视图,而基本表的变更也对照年夜,这时候候假如要我们一个一个的往断定视图是否是可以准确实行,那岂不是一件事情量十分年夜的事变,明天小编在收拾本人之前做的一个小工具的时分,在小工具发明了之前做的主动检测数据库中一切视图的准确性的办法,贴出来供人人参考:
在这个办法顶用到了sp_refreshview存储历程,该存储历程用于更新指定的未绑定到架构的视图的元数据。假如视图的基本表发明了变更,我们可使用sp_refreshview视图表来更新该视图,使该视图与基本表的字段同步,不至于呈现视图列错位的情形。而假如视图顶用到的字段在基本表中被删除,则sp_refreshview会报堕落误,以是,使用这个存储历程,我们就能够检测视图的可用性了。
全部办法界说以下:
///<summary>
///猎取一切视图考证了局
///</summary>
///<returns></returns>
publicstaticDataTableGetReFreshView()
{
stringsql="selectnamefromsys.views";
using(SqlConnectionconn=SqlConn())
{
conn.Open();
using(SqlCommandcmd=InitSqlCommand(conn,sql))
{
DataTabledt=newDataTable();
dt.Columns.Add("message",typeof(string));
DataSetds=Query(cmd);
foreach(DataRowdrinds.Tables[0].Rows)
{
sql=@"
declare@errorvarchar(50)
begintry
execsp_refreshview"+dr["name"].ToString()+"set@error=视图"+dr["name"].ToString()+"考证乐成!endtrybegincatchset@error=视图"+dr["name"].ToString()+"考证失利
+error_message()endcatchselect@error";
cmd.CommandText=sql;
objectresult=cmd.ExecuteScalar();
dt.Rows.Add(result.ToString());
}
returndt;
}
}
}
该办法顶用到了sqlserver的目次视图sys.views,该视图前往数据库中一切的用户视图,详细用法能够参考本站以下链接:
使用SQL语句查询数据库中一切视图
该办法起首是使用sys.views读出数据库中一切视图并存储到DataTable中,然后轮回DataTable行,逐行使用sp_refreshview来检测视图的准确性,假如视图年夜多,大概会形成界面假逝世,以是在小编的工具中,这个是使用多线程来办理的。人人也能够尝尝在数据库中检测出一切了局后再前往给用户。因为各系统的API不同,代码调用API编写程序就会遇到很多不兼容的地方,比如Java改写后的Serv-U就不能在手机上执行,手机的游戏也不能直接在微机上执行。 |
|