PDA

View Full Version : سوال: ر triger چه موقع استفاده می شه؟



سجادحیدری
جمعه 04 اردیبهشت 1388, 10:25 صبح
ار triger چه موقع استفاده می شه؟ یه مثال حوب؟

AminSobati
جمعه 04 اردیبهشت 1388, 12:09 عصر
در موارد متنوع!

- اعمال کردن Ruleهایی که با Constraint قابل پیاده سازی نیستند و باید Procedural اعمال بشن
- به هنگام سازی چند دیتابیس مثلا موضوع Replication
- Log گرفتن از تغییراتی که روی جدول رخ میده

tayebeh
یک شنبه 06 اردیبهشت 1388, 13:27 عصر
میشه بگید چطور میشه نکته سوم (Log گرفتن از تغییراتی که روی جدول رخ میده) را انجام داد؟
باتشکر

mom alone
یک شنبه 06 اردیبهشت 1388, 16:29 عصر
یه سئوال اگه بخواهیم با triger از تغیرات جدول لوگ بگیریم
و بخاهیم یک سری اطلاعات مانند نام کاربر و تاریخ و ساعت و .... رو هم ثبت کنیم(زمان تغییر)

چطوری اینکار رو بکنیم؟
آیا تریگر پارامتر ورودی دارد؟(نام کاربرو تاریخ)
یا میتوان به طریقی اونو به تریگر فرستاد؟

ممنون میشم کمک کنید

سجادحیدری
یک شنبه 06 اردیبهشت 1388, 22:53 عصر
جای dabirkhane اسم database خودتو بذار.:چشمک:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlClient;

using System.Security.Cryptography;


namespace project
{
public partial class basicform : Form
{

public basicform()
{
InitializeComponent();
}

string filename;
private void BACKUP_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e)
{
this.saveFileDialog1.ShowDialog();
if ((this.saveFileDialog1.FileName != ""))
{
filename = saveFileDialog1.FileName.ToString();
try

{
SqlConnection objcon = new SqlConnection();
objcon.ConnectionString = "Data Source=.;Initial Catalog=dabirkhaneh;Integrated Security=True";
SqlCommand objcom = new SqlCommand();
objcom.Connection = objcon;
string t = @"BACKUP DATABASE [dabirkhaneh]TO DISK=N'" + filename + "' WITH NOFORMAT,NOINIT,NAME=N'mydb-full Database Backup',SKIP,NOREWIND,NOUNLOAD,STATS=10;";
objcom.CommandText = t;
objcon.Open();
objcom.ExecuteNonQuery();
objcon.Close();
MessageBox.Show("پشتیبان گیری با موفقیت انجام شد");
}
catch

{
MessageBox.Show("پشتیبان گیری با موفقیت انجام نشد");
}
}
}
//**************************

//**************************

private void RESTORE_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e)
{
this.openFileDialog1.ShowDialog();
if ((this.openFileDialog1.FileName != "") && (this.openFileDialog1.FileName!="openFileDialog1"))
{
try

{
filename = openFileDialog1.FileName;
SqlConnection SqlCon = new SqlConnection();
SqlCon.ConnectionString = "Data Source=.;Initial Catalog=dabirkhaneh;Integrated Security=True";
SqlCommand SqlCom = new SqlCommand();
SqlCom.Connection = SqlCon;
SqlCon.Open();
SqlCom.CommandText ="ALTER DATABASE dabirkhaneh SET SINGLE_USER WITH ROLLBACK IMMEDIATE" +" USE master; RESTORE DATABASE dabirkhaneh FROM DISK =N'"+filename+"'";
SqlCom.Connection = SqlCon;
SqlCom.ExecuteNonQuery();
SqlCon.Close();
// *******************//

SqlCon.Open();
SqlCom.CommandText ="ALTER DATABASE dabirkhaneh SET MULTI_USER ";
SqlCom.Connection = SqlCon;
SqlCom.ExecuteNonQuery();
SqlCon.Close();
MessageBox.Show("بازیابی با موفقیت انجام شد");
}
catch

{
MessageBox.Show("بازیابی با موفقیت انجام نشد");
}
}
}



}
}

tayebeh
دوشنبه 07 اردیبهشت 1388, 11:31 صبح
ببخشید اینکه شیوه بک آپ گیری رو گفته ،آیا همینکار واسه لاگ کردن تغییرات یک جدول هم بکار میره؟

حامد مصافی
دوشنبه 07 اردیبهشت 1388, 11:50 صبح
@ mom alone (http://barnamenevis.org/forum/member.php?u=9288) :

- با استفاده از تابع getdate() یا {fn NOW()} می توان زمان جاری را به دست آورد.
- با استفاده از تابع SUSER_SNAME() می توان نام کاربر جاری را کسب کرد
اطلاعات بیشتر (http://msdn.microsoft.com/en-us/library/aa172599%28SQL.80%29.aspx)