טוב קיבלתי לידי התקנת SQL Denali , מה אני יכול לספר אם זה ייציב בשביל מפתחים אז מישהוא אימץ את שיטת שהמשתמשים יעשו QA.
רק לספר לכם על התהליך שהמכונה הזאת עברה (משידרוג של sql server 2008 R2) - כמה שגיאות מדהימות בשביל התענוג :
הכל התחיל מexceptions מבסיס נתונים
אז אמרתי טוב בשביל מה יש בסיס התקנה לידך :
בשביל לתקן את זה צריך לייצר חשבון משתמש שונה מnetbios name (שם מחשב), טוב אמרתי יאללה אולי שווה לי לעבוד עם denali ?
אהה מה עושים במצב כזה תשאלו ?
מקללים ומסירים כל דבר שקשור ל SQL Server (כולל compat) - לפני זה תכינו את הדיסק של VS2010 כי ההתקנה שלכם הולכת פיפאן.
מקללים עוד קצת כי אז מקבלים :
זה בסדר תרגישו טוב אתם רק בודקי תוכנה בחינם :-)
יופי הצלחת לעדכן את בסיס הנתונים ואתם מקבלים שגיעה שאי אפשר לפתוח VS 2010 כי חלק מהאלמנטים השתדרגו , לפי פורמים כל מה שצריך לעשות זה לבצע תיקון של ההתקנה :
זה בסדר , זו רק שגיאה שמצריכה להפעיל מחדש את המחשב ולנסות לעשות תיקון נוסף ...
משהוא חשוב בשביל לספר לכם תחזיקו שני instances של סביבת העבודה שלכם אחת ל SQL ואחת ל C הסיבה היא פשוטה: ביום אחד קרוב ל12 נפילות של הclient , אם חשבתם ש VS 2010 הוא איטי (על מחשב עם 4 ג"ב זכרון וכונן 7200) אז תתכונו לסיוט.
משהוא קטן אני עובד עם win7 מעודכן ללא שום תוכנות חיצוניות פרט לנדרשות (אני מהאנשים שאסרו עליהם להתקין vim).
זהוא סיימנו עם סיפורי הגבורה עם שירותי ה SQL :-) ונעבור לקצת קוד פתוח..
לאחר הערה של ארתיום על אי התמיכה ביוניקוד ב freetds החלטתי לבדוק מה עוד יהיה חסר (עדיף לדעת על צרות לפני זה).
לפתע אני לא מצליח להתחבר מ freetds עם שגיעה קריפטית:
אם אתם יודעים על מה מדובר על הכבוד לכם , זו דוגמה מצויינת להודעת שגיעה (כי היא משגעת ).
מדובר למעשה על בעיית חיבור שלא מתורגמת כמו שצריך.
טוב קופצים למכונה רואים שהפורט נכון שהכל כביכול עובד אבל אין חיבור.
חיפוש נוסף מגלה שלמרות שהגדרתי פורט להאזנה בשדה ipall פיספסתי שאני חייב לעבור שדה שדה ולמחוק תוכן מ dynamic ports, בסיום ההגדרה אצלי זה נראה כך :
בסדר נגמר יש אפילו חיבור :
#include <stdio.h>
#include <sql.h>
#include <sqlext.h>
static void extract_error(
char *fn,
SQLHANDLE handle,
SQLSMALLINT type);
main() {
SQLHENV env;
SQLHDBC dbc;
SQLHSTMT stmt;
SQLRETURN ret; /* ODBC API return status */
SQLCHAR outstr[1024];
SQLSMALLINT outstrlen;
/* Allocate an environment handle */
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
/* We want ODBC 3 support */
SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0);
/* Allocate a connection handle */
SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
/* Connect to the DSN mydsn */
ret = SQLDriverConnect(dbc, NULL, "Driver=FreeTds;SERVER=192.168.1.2\\SQLEXPRESS;UID=username;PWD=pwd;DATABASE=master", SQL_NTS,
outstr, sizeof(outstr), &outstrlen,
SQL_DRIVER_COMPLETE);
if (SQL_SUCCEEDED(ret)) {
printf("Connected\n");
printf("Returned connection string was:\n\t%s\n", outstr);
if (ret == SQL_SUCCESS_WITH_INFO) {
printf("Driver reported the following diagnostics\n");
extract_error("SQLDriverConnect", dbc, SQL_HANDLE_DBC);
}
SQLDisconnect(dbc); /* disconnect from driver */
} else {
fprintf(stderr, "Failed to connect\n");
extract_error("SQLDriverConnect", dbc, SQL_HANDLE_DBC);
}
/* free up allocated handles */
SQLFreeHandle(SQL_HANDLE_DBC, dbc);
SQLFreeHandle(SQL_HANDLE_ENV, env);
}
void extract_error(
char *fn,
SQLHANDLE handle,
SQLSMALLINT type)
{
SQLINTEGER i = 0;
SQLINTEGER native;
SQLCHAR state[ 7 ];
SQLCHAR text[256];
SQLSMALLINT len;
SQLRETURN ret;
fprintf(stderr,
"\n"
"The driver reported the following diagnostics whilst running "
"%s\n\n",
fn);
do
{
ret = SQLGetDiagRec(type, handle, ++i, state, &native, text,
sizeof(text), &len );
if (SQL_SUCCEEDED(ret))
printf("%s:%ld:%ld:%s\n", state, i, native, text);
}
while( ret == SQL_SUCCESS );
}
רק לספר לכם על התהליך שהמכונה הזאת עברה (משידרוג של sql server 2008 R2) - כמה שגיאות מדהימות בשביל התענוג :
הכל התחיל מexceptions מבסיס נתונים
אז אמרתי טוב בשביל מה יש בסיס התקנה לידך :
בשביל לתקן את זה צריך לייצר חשבון משתמש שונה מnetbios name (שם מחשב), טוב אמרתי יאללה אולי שווה לי לעבוד עם denali ?
אהה מה עושים במצב כזה תשאלו ?
מקללים ומסירים כל דבר שקשור ל SQL Server (כולל compat) - לפני זה תכינו את הדיסק של VS2010 כי ההתקנה שלכם הולכת פיפאן.
מקללים עוד קצת כי אז מקבלים :
זה בסדר תרגישו טוב אתם רק בודקי תוכנה בחינם :-)
יופי הצלחת לעדכן את בסיס הנתונים ואתם מקבלים שגיעה שאי אפשר לפתוח VS 2010 כי חלק מהאלמנטים השתדרגו , לפי פורמים כל מה שצריך לעשות זה לבצע תיקון של ההתקנה :
זה בסדר , זו רק שגיאה שמצריכה להפעיל מחדש את המחשב ולנסות לעשות תיקון נוסף ...
משהוא חשוב בשביל לספר לכם תחזיקו שני instances של סביבת העבודה שלכם אחת ל SQL ואחת ל C הסיבה היא פשוטה: ביום אחד קרוב ל12 נפילות של הclient , אם חשבתם ש VS 2010 הוא איטי (על מחשב עם 4 ג"ב זכרון וכונן 7200) אז תתכונו לסיוט.
משהוא קטן אני עובד עם win7 מעודכן ללא שום תוכנות חיצוניות פרט לנדרשות (אני מהאנשים שאסרו עליהם להתקין vim).
זהוא סיימנו עם סיפורי הגבורה עם שירותי ה SQL :-) ונעבור לקצת קוד פתוח..
לאחר הערה של ארתיום על אי התמיכה ביוניקוד ב freetds החלטתי לבדוק מה עוד יהיה חסר (עדיף לדעת על צרות לפני זה).
לפתע אני לא מצליח להתחבר מ freetds עם שגיעה קריפטית:
UNICODE Using encoding ASCII 'ISO8859-1' and UNICODE 'UCS-2LE'
DIAG [08S01] [FreeTDS][SQL Server]Unable to connect: Adaptive Server is unavailable or does not exist
DIAG [S1000] [FreeTDS][SQL Server]Unable to connect to data source
DIAG [08S01] [FreeTDS][SQL Server]Unable to connect: Adaptive Server is unavailable or does not exist
DIAG [S1000] [FreeTDS][SQL Server]Unable to connect to data source
מדובר למעשה על בעיית חיבור שלא מתורגמת כמו שצריך.
טוב קופצים למכונה רואים שהפורט נכון שהכל כביכול עובד אבל אין חיבור.
חיפוש נוסף מגלה שלמרות שהגדרתי פורט להאזנה בשדה ipall פיספסתי שאני חייב לעבור שדה שדה ולמחוק תוכן מ dynamic ports, בסיום ההגדרה אצלי זה נראה כך :
בסדר נגמר יש אפילו חיבור :
#include <stdio.h>
#include <sql.h>
#include <sqlext.h>
static void extract_error(
char *fn,
SQLHANDLE handle,
SQLSMALLINT type);
main() {
SQLHENV env;
SQLHDBC dbc;
SQLHSTMT stmt;
SQLRETURN ret; /* ODBC API return status */
SQLCHAR outstr[1024];
SQLSMALLINT outstrlen;
/* Allocate an environment handle */
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
/* We want ODBC 3 support */
SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0);
/* Allocate a connection handle */
SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
/* Connect to the DSN mydsn */
ret = SQLDriverConnect(dbc, NULL, "Driver=FreeTds;SERVER=192.168.1.2\\SQLEXPRESS;UID=username;PWD=pwd;DATABASE=master", SQL_NTS,
outstr, sizeof(outstr), &outstrlen,
SQL_DRIVER_COMPLETE);
if (SQL_SUCCEEDED(ret)) {
printf("Connected\n");
printf("Returned connection string was:\n\t%s\n", outstr);
if (ret == SQL_SUCCESS_WITH_INFO) {
printf("Driver reported the following diagnostics\n");
extract_error("SQLDriverConnect", dbc, SQL_HANDLE_DBC);
}
SQLDisconnect(dbc); /* disconnect from driver */
} else {
fprintf(stderr, "Failed to connect\n");
extract_error("SQLDriverConnect", dbc, SQL_HANDLE_DBC);
}
/* free up allocated handles */
SQLFreeHandle(SQL_HANDLE_DBC, dbc);
SQLFreeHandle(SQL_HANDLE_ENV, env);
}
void extract_error(
char *fn,
SQLHANDLE handle,
SQLSMALLINT type)
{
SQLINTEGER i = 0;
SQLINTEGER native;
SQLCHAR state[ 7 ];
SQLCHAR text[256];
SQLSMALLINT len;
SQLRETURN ret;
fprintf(stderr,
"\n"
"The driver reported the following diagnostics whilst running "
"%s\n\n",
fn);
do
{
ret = SQLGetDiagRec(type, handle, ++i, state, &native, text,
sizeof(text), &len );
if (SQL_SUCCEEDED(ret))
printf("%s:%ld:%ld:%s\n", state, i, native, text);
}
while( ret == SQL_SUCCESS );
}





אין תגובות:
הוסף רשומת תגובה