2012-06-03 18 views
5

Trong vài ngày qua tôi cuối cùng đã nghiên cứu cách kết nối ứng dụng C# của mình (Tôi đang sử dụng Visual Studio 2010 Express) cho SQL Server 2008 R2 của mình cơ sở dữ liệu bằng cách sử dụng Entity Framework và tôi hoàn toàn bị mắc kẹt.Visual C# và SQL Server không hoạt động chính xác cùng nhau // tệp đã được sử dụng

Khi tôi muốn thêm một DataSource mới trong VS Tôi chỉ tìm ra con đường của file db của tôi và khi tôi cuối cùng đã tìm thấy nó và cố gắng chọn nó, nó ném cho tôi một lỗi cho thấy

Tập tin này đã được sử dụng. Nhập tên mới hoặc đóng tệp đó, ứng dụng khác được sử dụng

Điều đó nghe có vẻ vô lý vì tôi không sử dụng tệp cơ sở dữ liệu của tôi trong hai ngày. Vì vậy, sau một chút googling cuối cùng tôi đã tìm thấy một giải pháp và tôi đã nhập vào SQL Server Configuration Manager và khởi động lại máy chủ SQL duy nhất của tôi.

Sau đó kết nối DataSource của tôi cuối cùng làm việc và tôi đã nghĩ rằng bây giờ tôi cạnh tranh nhất và tôi sẽ viết mã của tôi cho đến cuối ngày nhưng sau một vài phút, tôi có một vấn đề khác: O (lý do tôi viết ở đây).

Khi tôi sử dụng mọi phần một phần của SQL Server trong ứng dụng VS của mình thì SQL Server của tôi ngừng hoạt động. Tôi không thể duyệt cơ sở dữ liệu ở đó, tôi không thể thay đổi bất cứ điều gì, tôi không thể sử dụng truy vấn, chỉ là không có gì. Nó chỉ cho tôi biết rằng cơ sở dữ liệu này đã được sử dụng.

Cũng giống như vậy khi tôi làm điều đó theo cách ngược lại.

Tôi khởi động lại SQL Server thông qua Trình quản lý cấu hình SQL Server (để có thể sử dụng lại SQL Server) và sau đó tôi sử dụng tác vụ truy vấn DB SELECT * FROM nameDatabase.

Sau đó, tôi đã cố gắng để gỡ lỗi ứng dụng C# của tôi, nơi tôi có một combobox mà SQL Server đã điền vào một số tên và tôi nhận được lỗi mà SQL Server không thể truy cập. (Tôi không thể cho bạn biết chính xác lỗi ngay bây giờ nhưng sau khi googling tôi thấy rằng nó có nghĩa là SQL Server là không thể truy cập).

Nếu bất cứ ai muốn nhìn thấy mã mà sau đó nó là:

using (var entities = new PropertyDatabaseEntities()) 
{ 
    var userNames = entities.Login 
       .Select(login => login.Username) 
       .ToArray(); 

    comboboxLogin.Items.Clear(); 
    comboboxLogin.Items.AddRange(userNames); 
} 

Nhưng khi tôi khởi động lại SQL Server và biến debug này trước khi tôi sử dụng bất cứ điều gì từ SQL Server nó hoạt động.

Một số người đã nói với tôi rằng tôi không đóng kết nối nhưng điều đó không thể đúng bởi vì ngay cả khi tôi sử dụng SQL Server đầu tiên thì tôi vẫn không thể sử dụng kết nối giữa VS và SQL Server.

Tôi thực sự bị kẹt.

* Connection String

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    </configSections> 
    <connectionStrings><add name="Final.Properties.Settings.PropertyDatabaseConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\PropertyDatabase.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True" providerName="System.Data.SqlClient" /><add name="LoginEntities" connectionString="metadata=res://*/DataAccess.LoginModel.csdl|res://*/DataAccess.LoginModel.ssdl|res://*/DataAccess.LoginModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\Login.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" /><add name="PropertyEntities" connectionString="metadata=res://*/DataAccess.PropertyModel.csdl|res://*/DataAccess.PropertyModel.ssdl|res://*/DataAccess.PropertyModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\Property.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" /><add name="PropertyDatabaseEntities" connectionString="metadata=res://*/DataAccess.PropertyDatabaseModel.csdl|res://*/DataAccess.PropertyDatabaseModel.ssdl|res://*/DataAccess.PropertyDatabaseModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\PropertyDatabase.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" /></connectionStrings> 
</configuration> 
+0

Cách bạn đã mã hóa câu lệnh USING có nghĩa là kết nối sẽ được quản lý đúng và đóng. –

+0

Bạn có thể đăng chuỗi kết nối của mình không? –

+0

_ "Tập tin này đã được sử dụng. Nhập tên mới hoặc đóng tập tin đó, được sử dụng bởi ứng dụng khác." _ Không phải là lỗi đã biết. Sai số chính xác và những gì xảy ra? – CodeCaster

Trả lời

1

Hãy thử sử dụng các tên logic thay vì tên file/đường dẫn trong chuỗi kết nối của bạn. I THINK 'AttachDbFileName =' tính năng dành cho phiên bản SQL Server EXPRESS. Nhưng nó không được đề xuất cho sản xuất ít nhất, và nó chỉ là không phải là cách được đề nghị để thiết lập một kết nối.

thay vì TÊN FILE và PATH

Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\PropertyDatabase.mdf&quot 

TRY LOGIC TÊN

server = localhost \ SQLEXPR5; database = yourdatabase; id người dùng = sa; mật khẩu =;

Hãy xem www.connectionstrings.com

2

AttachDBFilename là duy nhất cho SQL Express. Cơ sở dữ liệu đơn giản là tên của cơ sở dữ liệu để sử dụng, nó không có ý nghĩa bổ sung. Đối với bất kỳ máy chủ sản xuất nào, bạn rất có thể sẽ không sử dụng AttachDBFilename. Nó rất hữu ích cho việc phát triển và thử nghiệm ở chế độ một người dùng.

Bạn đã phải thay đổi nguồn dữ liệu =. \ SQLEXPRESS trên máy chủ sản xuất và loại bỏ attachdbfilename đoạn từ chuỗi kết nối của bạn

Hy vọng nó sẽ giúp bạn.

Các vấn đề liên quan