PDA

View Full Version : خطا در ارتباط با بانک اطلاعاتی



mohammad2407
سه شنبه 29 اردیبهشت 1394, 12:26 عصر
سلام دوستان من یک برنامه نوشتم و فایل ستاپ ساختم و در سیستم کاربر بدون مشکل نصب کردم و هیچ مشکلی نداره

خودم به صورت دستی sql express 2012 نصب کردم ولی باز هم خطای زیر رو میده ؟

مشکل از کجاست

131417

Mofid.m
سه شنبه 29 اردیبهشت 1394, 12:36 عصر
مشکل شما عدم تنظیم صحیح Connection String هستش.
شما باید کانکشن استرینگی بنویسی که دیتابیس رو به sql express اتچ کنه.
تو اینترنت و تو همین سایت بگردی پیدا میکنی.

mohammad2407
سه شنبه 29 اردیبهشت 1394, 13:35 عصر
مشکل حل شد خطا از جایی دیگه بود

کانکشن من هیچ مشکلی نداره


<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrame workSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="PersonAccounting_Final.Properties.Settings.PersonA ccountingDBConnectionString" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirec tory|\PersonAccountingDB.mdf;Integrated Security=True;Connect Timeout=30" providerName="System.Data.SqlClient" />
<add name="PersonAccountingDBEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(LocalDB)\v11.0;attachdbfilename=|DataDirec tory|\PersonAccountingDB.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=Entit yFramework&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectio nFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>

Aqeel95
جمعه 16 مرداد 1394, 09:32 صبح
مشکل شما عدم تنظیم صحیح Connection String هستش.
شما باید کانکشن استرینگی بنویسی که دیتابیس رو به sql express اتچ کنه.
تو اینترنت و تو همین سایت بگردی پیدا میکنی.

سلام خدمت اساتید گرام
برنامم کامل شد اما خب باتوجه به اینکه اولین برنامست و باتوجه به این تایپک مشکلم مشخصه...
با ویژوال 2013 ساختم و پایگاه دادم هم sql server 2014 هست
توی سیستم کاربر sql express 2012 رو نصب کردم
connection string خودم این بود وتوی سیستم خودم کار میکنه بدون مشکل :


Data Source=Data Source=KARIMI_PC;Initial Catalog=New_work;Integrated Security=True"


وبا توجه به صحبت این دوستمون اون رو به کد زیر تغییر دادم


Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\New_work.mdf;Database=New_work;Integrated Security=True
//// نمیدونم چرا فاصله میزاره توی کلمه directory. فقط اینو بگم فاصله ای نداره درواقعیت


آیا کاری کردم درسته!!؟
جای دیگه ای نباید تغییر انجام بدم؟؟؟

*****
یه جا خوندم که دیتابیس ورژنای بالاتر sql روی نسخه های پایین تر کار نمیکنن!!!
*****
درکل به کمک اساتید نیازمندیم

محمد آشتیانی
جمعه 16 مرداد 1394, 10:29 صبح
سلام
دیتابیسی که در ورژن بالاتر اسکیوال سرور اتچ شده باشه ، در ورژن های پایینتر قابل استفاده نیست.

Aqeel95
جمعه 16 مرداد 1394, 10:51 صبح
سلام
دیتابیسی که در ورژن بالاتر اسکیوال سرور اتچ شده باشه ، در ورژن های پایینتر قابل استفاده نیست.

واما راه حل!!!؟
sql server express 2014 مشکلمو حل میکنه!!؟

توی کدهای connection string لازم نیست تغییری ایجاد کنم؟

omid nasri
جمعه 16 مرداد 1394, 13:46 عصر
اگر دیتابیس شما نسخه بالاتر از نسخه سیستم کاربر هستش میتوانید کانفیگ دیتابیس رو تغییر بدید به این گونه که در نسخه های پایین تر میتونه قابل استفاده باشه برای مثال:
دیتابیس مورد نظر رو انتخاب کنید و با کلیک راست بر روی آن و انتخاب گذینه Properties پنجره زیر برای شما نمایان خواهد شد که می بایست در سمت چپ گذینه option کلیک نماید.



133997

همان گونه که مشاهده میکنید در سمت چپ لیبلی قرار دارد با نوشته compatibility level که میتونید نسخه sql server کاربر رو مشخص نماید.
امیدوارم مفید واقع شود.

Aqeel95
جمعه 16 مرداد 1394, 14:29 عصر
اگر دیتابیس شما نسخه بالاتر از نسخه سیستم کاربر هستش میتوانید کانفیگ دیتابیس رو تغییر بدید به این گونه که در نسخه های پایین تر میتونه قابل استفاده باشه برای مثال:
دیتابیس مورد نظر رو انتخاب کنید و با کلیک راست بر روی آن و انتخاب گذینه Properties پنجره زیر برای شما نمایان خواهد شد که می بایست در سمت چپ گذینه option کلیک نماید.


133997

همان گونه که مشاهده میکنید در سمت چپ لیبلی قرار دارد با نوشته compatibility level که میتونید نسخه sql server کاربر رو مشخص نماید.
امیدوارم مفید واقع شود.

باتشکر از شما آقا امید.... اما خب این راهی که گفتین یکم دیر شد چون من sql 2012 رو پاک کردم و SQL express 2014 رو نصب کردم براشون...
اما این تغییر وضعیتی که گفتین خیلی مفیده برام

اما مسئله ای که برام پیش اومده الان اینه :
133999

شاید عکس خوب نباشه چون با موبایل گرفتم...خطارو مینویسم :


Could not open new database "database name ".CREAT DATABASE is aborted.
cannot attach the file 'C:Address nasb barname\\databaename.mdf as database 'databasename'
File activision failure.The physical file name "C:mahal nasb sql/data/databasename_log.ldf may be incorrect.


مشکل چیه و راه حل چیه....
پیشاپیش ممنون

omid nasri
جمعه 16 مرداد 1394, 15:31 عصر
من با این مشکل برخورد نکردم اگر تا امشب درست نشد تو پیام خصوصی شماره تلگرام رو بفرست با تیم ویور مشکل رو برسی کنم.

محمد آشتیانی
شنبه 17 مرداد 1394, 00:36 صبح
اگر دیتابیس شما نسخه بالاتر از نسخه سیستم کاربر هستش میتوانید کانفیگ دیتابیس رو تغییر بدید به این گونه که در نسخه های پایین تر میتونه قابل استفاده باشه برای مثال:
دیتابیس مورد نظر رو انتخاب کنید و با کلیک راست بر روی آن و انتخاب گذینه Properties پنجره زیر برای شما نمایان خواهد شد که می بایست در سمت چپ گذینه option کلیک نماید.



133997

همان گونه که مشاهده میکنید در سمت چپ لیبلی قرار دارد با نوشته compatibility level که میتونید نسخه sql server کاربر رو مشخص نماید.
امیدوارم مفید واقع شود.

سلام
جناب نصری ، مطلبی که فرمودید ، هیچ ارتباطی به کارکردن دیتابیس موجود با نسخه های پایین تر SqlServer نداره ، در واقع قابلیت Compatibility level برای انطباق با دستورات و گرامر زبان T-Sql هست.
این به چه معنی هست ، یعنی اینکه برفرض دستوری در ورژن ۹۰ که نسخه ۲۰۰۵ هست پشتیبانی می‌شده که در نسخه ۱۰۰ پشتیبانی نمیشه ، با این قابلیت ، شما اگر از اون دستور خاص در کوئریتون استفاده کرده باشید ، می‌تونید با قرار دادن Compatibility level دیتابیستون ، در SqlServer 2008R2 روی ۹۰ ، همچنان از اون دستور خاص استفاده کنید.
بنابراین راهنمایی شما اشتباه هست و مطلبی که در پست قبلیم عرض کردم صحیحه.



موفق باشید.