Yazılım.
CevapSitesi.com Beta!
Çözüm Noktası
Facebook, Twitter, Google+ veya e-posta ile paylaşın.
| Sorular | Makaleler | Üyeler | Etiketler  | İletişim
Soru sormak ya da cevap vermek için;
giriş yapın veya üye olun.

Sosyal medya hesaplarınızla da giriş yapabilirsiniz.
0

Veritabanı Yedeklemesi Sırasında Erişim Engeli

Merhaba,

Daha önceden Access veri tabanı kullanıyordum ve SQL veri tabanına geçiş yaptım.

Sql veri tabanını yedeklerken dosya erişimi hatası alıyorum. 

Kullanmış olduğum ilk kod bloku şu şeklide; ve burada herhangi bir hata almıyorum.
... private void YedekAl_Lokal()
        {
            string klasorYeri = "C:\\Uygulama Yedek";
            string klasorolustur = klasorYeri + @"\"; 
            Directory.CreateDirectory(klasorolustur);
            System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(klasorYeri);
            System.IO.FileInfo[] fis = di.GetFiles("*.bak");
            if (fis.Length == 0 || (DateTime.Now - fis.Max(d => d.CreationTime)).TotalDays >= 3)
            {
                string database = bağ.Database.ToString();
                try
                {
                    string yol = "C:\\Uygulama Yedek";
                    string cmd = "BACKUP DATABASE [" + database + "] TO DISK='" + yol + "\\" + DateTime.Now.ToString("dd.MM.yyyy_hhmmss") + "-Veriler_SQL" + ".bak'";

                    using (SqlCommand command = new SqlCommand(cmd, bağ))
                    {
                        if (bağ.State != ConnectionState.Open)
                        {
                            bağ.Open();
                        }
                        command.ExecuteNonQuery();
                        bağ.Close();
                        MessageBox.Show("Veritabanı Yedeklenmiştir...");
                    }
                }
                catch (Exception HATA)
                {
                    MessageBox.Show(HATA.Message);
                    return;
                }
            }
        }

Hata almış olduğum diğer kod bloku ise şu şekilde; Burada google drive klasörüne erişim engelleniyor.
...private void YedekAl_Drive()
        {
            string database = bağ.Database.ToString();
            try
            {
                string klasorYeri2 = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Google Drive", "Uygulama", "Raporlar", "Genel Ortak Paylaşım", "Yedek");

		string klasorYeri = "C:\\Uygulama Yedek";
                string klasorolustur = klasorYeri + @"\"; 
                string klasorolustur2 = klasorYeri2 + @"\";
                Directory.CreateDirectory(klasorolustur);
                Directory.CreateDirectory(klasorolustur2);


             
                string yol = klasorYeri;
                string yol2 = klasorYeri2;



                string cmd = "BACKUP DATABASE [" + database + "] TO DISK='" + yol + "\\" + DateTime.Now.ToString("dd.MM.yyyy_hhmmss") + "-Veriler_SQL" + ".bak'";
                string cmd2 = "BACKUP DATABASE [" + database + "] TO DISK='" + yol2 + "\\" + DateTime.Now.ToString("dd.MM.yyyy_hhmmss") + "-Veriler_SQL" + ".bak'";

                                                          
                using (SqlCommand command = new SqlCommand(cmd, bağ))
                {
                    if (bağ.State != ConnectionState.Open)
                    {
                        bağ.Open();
                    }
                    command.ExecuteNonQuery();
                    bağ.Close();
                }
                using (SqlCommand command2 = new SqlCommand(cmd2, bağ))
                {
                    if (bağ.State != ConnectionState.Open)
                    {
                        bağ.Open();
                    }
                    command2.ExecuteNonQuery();
                    bağ.Close();
                    MessageBox.Show("Veritabanı Drive Klasörüne" + Environment.NewLine + "ve" + Environment.NewLine + "C:\\UygulamaYedek klasörüne yedeklenmiştir...");
                }

            }
            catch (Exception HATA)
            {
                MessageBox.Show(HATA.Message);
                return;
            }
        }

Yardımlarınızı bekliyorum. Kolay gelsin.

Soran: 11.11.19 12:11
hakandogan
310p 32ü

1 Cevap

0
Hizmetler (Services) yönetim konsolunu aç (aramaya hizmetler veya services yazınca çıkar). Burada SQL Server ana hizmetini bul (örneğin "SQL Server (SQLEXPRESS)"). Çift tıkla. Çıkan ayarlardan "Oturum Açma" sekmesindeki "Yerel Sistem Hesabı" nı seç. İngilizcesinde Logon As gibi bir şey olması lazım.

Veya SQL Server Configuration Manager varsa (bende yok deneyemiyorum) orada Logon As gibi bir seçeneği ara ve bunu yerel sistem hesabı ile ya da yedek almak istediğin klasöre erişim izni olan bir hesapla değiştir.

Veya hizmetin özelliklerini görüntülediğinde "Oturum Açma" sekmesinde görünen oturum açma hesabına yedekleme yapacağın klasör için erişim yetkisi ver.

Bunların sonunda SQL Server hizmetini yeniden başlat.


Cevaplayan: 15.11.19 16:18
cevapsitesi
102,035p 16ü
Cevabı seçen: 08.12.19 23:36
hakandogan
310p 32ü