Showing posts with label heres. Show all posts
Showing posts with label heres. Show all posts

Wednesday, March 28, 2012

Problems Inserting DateTimeStamp into database

Here's the error I get trying to run the code posted below..."Prepared statement '(@.datestamp datetime,@.PrevValue real,@.NewValue real,@.IPaddress r' expects parameter @.datestamp, which was not supplied."

I've tried it without the quotes around the DateTime.Now and also adding the # around them. Without the quotes, I do get a different error because it doesn't like the spaces in the DateTime text. Also, the datestamp data in the database is formatted as a datetime (MS SQL Server 2005).

Here's my code:

PrivateSub UpdateRefresh()

UpdateConnection.Open()

UpdateDataAdapter.InsertCommand.CommandText = "INSERT INTO dbo.tbDeploy(datestamp," & _

"PrevValue, NewValue, IPaddress, HighCapability, LowCapability, Share) VALUES" & _

"('" & DateTime.Now & "', '" & lblCurrent.Text & "', '" & lblCurrent.Text & _

"', '" & lblIP.Text & "', '" & lblHigh.Text & "', '" & lblLow.Text & "', '" & lblShare.Text & "')"

UpdateDataAdapter.InsertCommand.ExecuteNonQuery()

UpdateConnection.Close()

EndSub

Use parameterized queries. Your problem will be solved. You can also prevent SQL Injection attacks.

Monday, March 26, 2012

Problems grasping ado.net - coming from asp background

Hi, i've downloaded a membership and roles provider but i am very new to ado.net. I have come fromasp background. Here's mycode:

public override void AddUsersToRoles(string[] usernames, string[] rolenames) {
// Validate arguments
foreach (string rolename in rolenames) if (!this.RoleExists(rolename)) throw new ProviderException("Role name not found");
foreach (string username in usernames) {
if (username.IndexOf(',') > 0) throw new ArgumentException("User names cannot contain commas.");
foreach (string rolename in rolenames) {
if (IsUserInRole(username, rolename)) throw new ProviderException("User is already in role.");
}
}

SqlConnection db = this.OpenDatabase();
SqlCommand cmd = new SqlCommand("INSERT INTO UsersInRoles (UserName, RoleName) VALUES (@.UserName, @.RoleName)", db);
cmd.Parameters.Add("@.UserName", SqlDbType.VarChar, 100);
cmd.Parameters.Add("@.RoleName", SqlDbType.VarChar, 100);
SqlTransaction tran = null;

try {
tran = db.BeginTransaction();
cmd.Transaction = tran;
foreach (string username in usernames) {
foreach (string rolename in rolenames) {
cmd.Parameters["@.UserName"].Value = username;
cmd.Parameters["@.RoleName"].Value = rolename;
cmd.ExecuteNonQuery();
}
}
tran.Commit();
}
catch {
tran.Rollback();
throw;
}
finally {
db.Close();
}
}

private SqlConnection OpenDatabase() {
SqlConnection DB = new SqlConnection(this.connectionString);
DB.Open();
return DB;
}

The problem i have is that the table structure they provide is to have:

UsersInRoles
- UserName (foreign key to users table)
- RoleName (foreign key to roles table)

but the table structure i have is:

UsersInRoles
- UserID (foreign key to users table)
- RoleID (foreign key to roles table)

So what i need to do is lookup the UserID and RoleID from the appropriate tables based on the UserName and RoleName before doing the insert. However i am not familiar with the new syntax. I'm sure i could bodge something together but i assume this new syntax is something to do with running all the insert statements in one (transaction) so it doesn't have to keep taking round trips back to sqlserver.

Appreciate if someone could show me how this could be done. Thanks

If I understand you correctly, this issue does not differ from ASP to ASP.NET. You need to get UserName(RoleName) based on UserID(RoleID) and then insert the values into UsersInRoles table, right? If so, you can create a stored procedure like this:

CREATE PROCEDURE sp_InsUsersInRoles @.RoleID INT
AS
INSERT INTO UsersInRoles (UserName, RoleName)
SELECT UserName, RoleName
FROM Users join Roles ON Users.RoleID=Roles.RoleID
WHERERoles.RoleID=@.RoleID

Then you can easily call the stored procedure, just remember to set the SqlCommand.CommandType to StoredProcedure, and add parameter for it.

|||

Change:

SqlCommand cmd = new SqlCommand("INSERT INTO UsersInRoles (UserName, RoleName) VALUES (@.UserName, @.RoleName)", db);

to:

SqlCommand cmd = new SqlCommand("INSERT INTO UsersInRoles (UserID, RoleID)SELECT (SELECT UserIDFROM UsersWHERE Username=@.UserName),RoleIDFROM RolesWHERE RoleName=@.RoleName", db);
|||

Hi Motley worked a treat. However i also tried doing:

SqlConnection db = this.OpenDatabase();
SqlCommand cmd = new SqlCommand("INSERT INTO UserRoles (UserName, RoleName) VALUES (@.UserId, @.RoleId)", db);
cmd.Parameters.Add("@.UserId", SqlDbType.Int);
cmd.Parameters.Add("@.RoleId", SqlDbType.Int);
SqlTransaction tran = null;

try {
tran = db.BeginTransaction();
cmd.Transaction = tran;
foreach (string userName in userNames) {
SqlCommand cmd2 = new SqlCommand("SELECT UserId FROM Users WHERE UserName = @.UserName", db);
cmd2.Parameters.Add("@.UserName", SqlDbType.VarChar, 100).Value = userName;
int userId = (int)cmd2.ExecuteScalar();

foreach (string roleName in roleNames) {
SqlCommand cmd3 = new SqlCommand("SELECT RoleId FROM Roles WHERE RoleName = @.RoleName", db);
cmd3.Parameters.Add("@.RoleName", SqlDbType.VarChar, 100).Value = roleName;
int roleId = (int)cmd3.ExecuteScalar();

cmd.Parameters["@.UserId"].Value = userId;
cmd.Parameters["@.RoleId"].Value = roleId;
cmd.ExecuteNonQuery();
}
}
tran.Commit();
}
catch {
tran.Rollback();
throw;
}
finally {
db.Close();
}

but it didn't work.

Any ideas what i did wrong. Cheers

|||

Is RoleName unique within Roles? If you are using the default asp.net membership database structure, then it is not. RoleName is only unique within an Application, and hence may appear in Roles multiple times for different applications. If you have multiple application support, then you will need to supply the application name or application id to your roleid lookup.

My code in this case will add the user to the RoleName of all applications in which the role appears. The same problem is true for UserName as well if you are using multiple applications, but my code will fail in that case as well.

Otherwise I see nothing wrong with your code.

|||

On the other hand, it could be transaction related. I don't normally use the transaction support in ASP.NET. I prefer to use SQL transactions for all my work since I tend to create large batches within my SQL, and wrap that rather than wrapping many SqlCommands. In any case, you might try adding the cmd2 and cmd3 to the transaction as well.

It would also help if you posted what error you are getting rather than just "It didn't work".

|||

Hi, i can't see how to track the error, i'm using visual studio web developer edition. I tried using the built in asp.net config tool to manage my users but when i put a break point in my code it does nothing. However to test if it was reaching this part of the code i did a dummy insert statement and it worked.

I also tried putting an exception on the catch part and doing console.writeline(ex.Message) but that didn't do anything either.

Appreciate your help once more. Thanks

Friday, March 9, 2012

Problem: getting an index provider to work with SQL Server 2000

Hi all,
I am trying to get the SQL Server 2000 to use the indices implemented by my
custom OLE DB provider to optimize the joins. Basically, here's what I want
to achieve:
1. My provider exposes a table indexed by 1 column ($REF) via IOpenRowset.
Essentially, the rowset it provides is a unique clustered (thus integrated)
index.
2. I pull this column into a table (call it Local) in an SQL Server database
along with some other column(s).
3. I index this table on those other column(s).
4. I want to do a query of the following type:
SELECT Linked.* FROM Local JOIN LinkedSvr...LinkedTbl Linked ON Local.REF =
Linked.[$REF]
WHERE <some condition on Local's columns other than REF>
The expected result is that the SQL server will form an execution plan where
Local is scanned (or even directly seeked if condition is fully satisfiable
by an index seek) and then Linked is seeked using the obtained $REF value.
What happens is that the SQL Server does indeed request an index rowset
(setting both table and index IDs in a call to IOpenRowset::OpenRowset() )
but afterwards makes no attempt to seek on it and just scans it. Not sure
what I am doing wrong...
Checklist:
- IDBSchemaRowset: supports TABLES, COLUMNS and INDEXES
- IOpenRowset::OpenRowset() supports table + index
- Index rowset implements IRowset, IRowsetIndex, IAccessor, IColumnsInfo,
IRowsetInfo. Since it is essentially the same object as the table itseff, it
also supports IRowsetLocate and IRowsetBookmark.
- The rowset provides boolmark column(s): I tried using just self-bookmark
and both self-bookmark and external bookmark at once.
- Index As Access Path is set
- compatible collation is set (though $REF is an integer column)
I wonder if there exists a detailed description of the logic that query
optimizer follows when a linked data source is present in the query?
Whatever I was able to find on the Internet is exceedingly schematic and I
seem to be satisfying those requirements...
Regards,
...Max...
Max,
What happens if you use the OPENQUERY FUNCTION? Or possibly create an
additional NC index for the column used in the WHERE clause i.e, the local
table column?
HTH
Jerry
"Max Motovilov" <max@.yymap.com> wrote in message
news:ecvd1uN2FHA.612@.TK2MSFTNGP10.phx.gbl...
> Hi all,
> I am trying to get the SQL Server 2000 to use the indices implemented by
> my
> custom OLE DB provider to optimize the joins. Basically, here's what I
> want
> to achieve:
> 1. My provider exposes a table indexed by 1 column ($REF) via IOpenRowset.
> Essentially, the rowset it provides is a unique clustered (thus
> integrated)
> index.
> 2. I pull this column into a table (call it Local) in an SQL Server
> database
> along with some other column(s).
> 3. I index this table on those other column(s).
> 4. I want to do a query of the following type:
> SELECT Linked.* FROM Local JOIN LinkedSvr...LinkedTbl Linked ON Local.REF
> =
> Linked.[$REF]
> WHERE <some condition on Local's columns other than REF>
> The expected result is that the SQL server will form an execution plan
> where
> Local is scanned (or even directly seeked if condition is fully
> satisfiable
> by an index seek) and then Linked is seeked using the obtained $REF value.
> What happens is that the SQL Server does indeed request an index rowset
> (setting both table and index IDs in a call to IOpenRowset::OpenRowset() )
> but afterwards makes no attempt to seek on it and just scans it. Not sure
> what I am doing wrong...
> Checklist:
> - IDBSchemaRowset: supports TABLES, COLUMNS and INDEXES
> - IOpenRowset::OpenRowset() supports table + index
> - Index rowset implements IRowset, IRowsetIndex, IAccessor, IColumnsInfo,
> IRowsetInfo. Since it is essentially the same object as the table itseff,
> it
> also supports IRowsetLocate and IRowsetBookmark.
> - The rowset provides boolmark column(s): I tried using just self-bookmark
> and both self-bookmark and external bookmark at once.
> - Index As Access Path is set
> - compatible collation is set (though $REF is an integer column)
> I wonder if there exists a detailed description of the logic that query
> optimizer follows when a linked data source is present in the query?
> Whatever I was able to find on the Internet is exceedingly schematic and I
> seem to be satisfying those requirements...
> Regards,
> ...Max...
>
|||> What happens if you use the OPENQUERY FUNCTION?
Can't really do an OPENQUERY as my provider is IOpenRowset-based. The
problem I originally had with OPENROWSET() was that it didn't instantiate
the provider in-process and nothing worked. Now that I configured the
provider as in-process I wonder if OPENROWSET() started working... will
try.

> Or possibly create an
> additional NC index for the column used in the WHERE clause i.e, the local
> table column?
Hmm... not sure what you mean here. I can't easily create an index for an
arbitrary field IN MY PROVIDER -- that's why I want to use SQL Server (MSDE,
really) indexing to start off with! My data are in large binary files with
proprietary format and I just expose them as a set of tables. As a matter of
fact, I have 2 indices -- the other one looks like ( ROW, COLUMN, REF ) but
when I exposed both through COLUMNS schema rowset, the SQL Server kept
picking the wrong one! I decided to take this one problem at a time and
hidden the other index. I guess I COULD show it as a pretend nonclustered
index and see what happens... not that it will ultimately get me where I
want to be.
Regards,
...Max...
|||Max Motovilov (max@.yymap.com) writes:
> I am trying to get the SQL Server 2000 to use the indices implemented by
> my custom OLE DB provider to optimize the joins. Basically, here's what
> I want to achieve:
Now, that's definitely an advanced topic!
Since I don't know whether this is doable at all, I've posted your question
into to our internal MVP forum. Whether that actually leads to something
I don't know.
Erland Sommarskog, SQL Server MVP, esquel@.sommarskog.se
Books Online for SQL Server SP3 at
http://www.microsoft.com/sql/techinf...2000/books.asp
|||Hi Max,
Have you tried implementing the statistics rowsets (special IDBSchemaRowset
rowsets) in your provider as they're implemented in SQL Server provider?
These are spec'd (I think) in one of the later OLE DB spec updates. I'm
remembering this from a while back, and there may even be a whitepaper
(although I believe it just indicates what interfaces are used rather than
when). If you're wanting SQL Server to use the index in your provider in
your database, it may have to know "if its worth it".
Cheers,
Bob Beauchemin
http://www.SQLskills.com/blogs/bobb
"Max Motovilov" <max@.yymap.com> wrote in message
news:eBNr3NO2FHA.2364@.TK2MSFTNGP12.phx.gbl...
> Can't really do an OPENQUERY as my provider is IOpenRowset-based. The
> problem I originally had with OPENROWSET() was that it didn't instantiate
> the provider in-process and nothing worked. Now that I configured the
> provider as in-process I wonder if OPENROWSET() started working... will
> try.
>
> Hmm... not sure what you mean here. I can't easily create an index for an
> arbitrary field IN MY PROVIDER -- that's why I want to use SQL Server
> (MSDE,
> really) indexing to start off with! My data are in large binary files with
> proprietary format and I just expose them as a set of tables. As a matter
> of
> fact, I have 2 indices -- the other one looks like ( ROW, COLUMN, REF )
> but
> when I exposed both through COLUMNS schema rowset, the SQL Server kept
> picking the wrong one! I decided to take this one problem at a time and
> hidden the other index. I guess I COULD show it as a pretend nonclustered
> index and see what happens... not that it will ultimately get me where I
> want to be.
> Regards,
> ...Max...
>
|||Bob,
Thanks for the suggestion! I was thinking along the same lines too but since
implementing TABLE_STATISTICS is a nontrivial amount of work I was waiting
for someone to push me in that direction Whitepaper would be something
I'd really love to see... MSDN documentation is sketchy at best
Regards,
...Max...
"Bob Beauchemin" <no_bobb_spam@.sqlskills.com> wrote in message
news:O2qunjP2FHA.400@.TK2MSFTNGP09.phx.gbl...
> Hi Max,
> Have you tried implementing the statistics rowsets (special
IDBSchemaRowset[vbcol=seagreen]
> rowsets) in your provider as they're implemented in SQL Server provider?
> These are spec'd (I think) in one of the later OLE DB spec updates. I'm
> remembering this from a while back, and there may even be a whitepaper
> (although I believe it just indicates what interfaces are used rather than
> when). If you're wanting SQL Server to use the index in your provider in
> your database, it may have to know "if its worth it".
> Cheers,
> Bob Beauchemin
> http://www.SQLskills.com/blogs/bobb
>
> "Max Motovilov" <max@.yymap.com> wrote in message
> news:eBNr3NO2FHA.2364@.TK2MSFTNGP12.phx.gbl...
instantiate[vbcol=seagreen]
an[vbcol=seagreen]
with[vbcol=seagreen]
matter[vbcol=seagreen]
nonclustered
>
|||OK. Found the whitepaper. Is the email address for you below valid (I don't
think I can post news attachments). The whitepaper does say some interesting
things around index access, like "setting the Index as Access Path" provider
option". If this isn't a valid address for you, send me email at the address
below (after stripping the "no spam") with a valid one.
Cheers,
Bob Beauchemin
http://www.SQLskills.com/blogs/bobb
"Max Motovilov" <max@.yymap.com> wrote in message
news:epbP$xP2FHA.3592@.TK2MSFTNGP12.phx.gbl...
> Bob,
> Thanks for the suggestion! I was thinking along the same lines too but
> since
> implementing TABLE_STATISTICS is a nontrivial amount of work I was waiting
> for someone to push me in that direction Whitepaper would be something
> I'd really love to see... MSDN documentation is sketchy at best
> Regards,
> ...Max...
> "Bob Beauchemin" <no_bobb_spam@.sqlskills.com> wrote in message
> news:O2qunjP2FHA.400@.TK2MSFTNGP09.phx.gbl...
> IDBSchemaRowset
> instantiate
> an
> with
> matter
> nonclustered
>
|||I got this reply from one of the MS devs:
Try select _col_ (not *) from ...
If the index is not covering, we may choose a scan instead due to costing
differences.
He also remarked that they have seen this done, but it takes an amout of
expertise. I hope that the white-paper that Bob found can help you out.
Erland Sommarskog, SQL Server MVP, esquel@.sommarskog.se
Books Online for SQL Server SP3 at
http://www.microsoft.com/sql/techinf...2000/books.asp
|||Erland,

> I got this reply from one of the MS devs:
> Try select _col_ (not *) from ...
Tried, doing SELECT <column list> makes no difference. Still a scan.

> He also remarked that they have seen this done, but it takes an amout of
> expertise. I hope that the white-paper that Bob found can help you out.
Bob's suggestion to implement TABLE_STATISTICS makes a lot of sense; I'm
gonna try and fake it (probably will just show some huge cardinality for the
index to make it especially tasty for a seek) and see what happens. I wonder
if temerity may serve as a substitute to expertise :-D
Regards,
...Max...
|||Bob, Erland:

> Have you tried implementing the statistics rowsets (special
IDBSchemaRowset
> rowsets) in your provider as they're implemented in SQL Server provider?
Tried this now -- no change. I have not REALLY implemented gathering of
statistics, just return a failrly large cardinality (1,000,000) for both the
table and the [$REF] column. SQL Server does indeed request this schema
rowset (checked with debugger) and the number 1,000,000 makes it into the
estimated execution plan. Remote index scan is estimated at 98% of all
effort so it is not likely that query optimizer underestimates the cost of
the scan, but it still does not want to consider seek. I am thinking that
for some reason it doesn't believe it CAN seek on this index, but how do I
disabuse him of this?
Checklist of what I've done:
- DBPROP_TABLESTATISTICS = DBPROPVAL_TS_CARDINALITY
- Implemented TABLE_STATISTICS. Non-null columns: TABLE_NAME,
STATISTICS_NAME, STATISTICS_TYPE = (DBSTAT_COLUMN_CARDINALITY |
DBSTAT_TUPLE_CARDINALITY),
ORDINAL_POSITION, COLUMN_CARDINALITY, TUPLE_CARDINALITY, TABLE_CARDINALITY
(all cardinalities at 1,000,000)
The whitepaper had a bunch of interesting stuff (some of it I ran into head
on when debugging my code) but it did not really expound upon the process of
query optimization in presence of an index provider. I seem to be satisfying
whatever requirements it imposes. Looks like I am missing SOMETHING
(property, interface, some trait of the returned rowset?), but what? FWIW,
I am including the trace of properties SQL server requests when I estimate
execution plan in Query Analyzer.
Regards,
...Max...
================================
MfbSource::SetProperties() returned 0x00040eda
Returned:
{C8B522BC-5CF3-11CE-ADE5-00AA0044773D}
INIT_TIMEOUT 0x00000001 0x00000001 20
INIT_GENERALTIMEOUT 0x00000001 0x00000001 600
INIT_DATASOURCE 0 0 mfoledb.ini
INIT_LOCATION 0 0 E:\MapFrame\ugi\data_big
MfbSource::GetProperties() returned 0x00040eda
Requested:
{C8B522BB-5CF3-11CE-ADE5-00AA0044773D}
DBMSNAME
DBMSVER
PROVIDERNAME
PROVIDEROLEDBVER
CATALOGLOCATION
IDENTIFIERCASE
QUOTEDIDENTIFIERCASE
MULTIPLESTORAGEOBJECTS
OLEOBJECTS
STRUCTUREDSTORAGE
BYREFACCESSORS
SQLSUPPORT
CONCATNULLBEHAVIOR
NULLCOLLATION
TABLESTATISTICS
{2344480C-33A7-11D1-9B1A-006008268B9E}
ASYNCTXNCOMMIT
AUTH_CACHE_AUTHINFO
AUTH_ENCRYPT_PASSWORD
AUTH_INTEGRATED
AUTH_MASK_PASSWORD
AUTH_PASSWORD
BOOKMARKTYPE
{DF10CB94-35F6-11D2-9C54-00C04F7971D3}
ABORTPRESERVE
ACTIVESESSIONS
ASYNCTXNCOMMIT
AUTH_CACHE_AUTHINFO
AUTH_ENCRYPT_PASSWORD
AUTH_INTEGRATED
Returned:
{C8B522BB-5CF3-11CE-ADE5-00AA0044773D}
DBMSNAME 0 0 FieldSmart MFB
DBMSVER 0 0 01.00.0201
PROVIDERNAME 0 0 MFOLEDB.MFB
PROVIDEROLEDBVER 0 0 02.60
CATALOGLOCATION 0 0x00000001
IDENTIFIERCASE 0 0x00000001
QUOTEDIDENTIFIERCASE 0 0x00000001
MULTIPLESTORAGEOBJECTS 0 0x00000001
OLEOBJECTS 0 0x00000001
STRUCTUREDSTORAGE 0 0x00000001
BYREFACCESSORS 0 0 0
SQLSUPPORT 0 0 0
CONCATNULLBEHAVIOR 0 0x00000001
NULLCOLLATION 0 0 4
TABLESTATISTICS 0 0 1
{2344480C-33A7-11D1-9B1A-006008268B9E}
ASYNCTXNCOMMIT 0 0x00000001
AUTH_CACHE_AUTHINFO 0 0x00000001
AUTH_ENCRYPT_PASSWORD 0 0x00000001
AUTH_INTEGRATED 0 0x00000001
AUTH_MASK_PASSWORD 0 0x00000001
AUTH_PASSWORD 0 0x00000001
BOOKMARKTYPE 0 0x00000001
{DF10CB94-35F6-11D2-9C54-00C04F7971D3}
ABORTPRESERVE 0 0x00000001
ACTIVESESSIONS 0 0x00000001
ASYNCTXNCOMMIT 0 0x00000001
AUTH_CACHE_AUTHINFO 0 0x00000001
AUTH_ENCRYPT_PASSWORD 0 0x00000001
AUTH_INTEGRATED 0 0x00000001
MfbRowset::GetProperties() returned 0
Requested:
{C8B522BE-5CF3-11CE-ADE5-00AA0044773D}
BOOKMARKTYPE
Returned:
{C8B522BE-5CF3-11CE-ADE5-00AA0044773D}
BOOKMARKTYPE 0 0 1
MfbSource::SetProperties() returned 0x00040eda
Returned:
{C8B522BC-5CF3-11CE-ADE5-00AA0044773D}
INIT_TIMEOUT 0x00000001 0x00000001 20
INIT_GENERALTIMEOUT 0x00000001 0x00000001 600
INIT_DATASOURCE 0 0 mfoledb.ini
INIT_LOCATION 0 0 E:\MapFrame\ugi\data_big
MfbSource::SetProperties() returned 0x00040eda
Returned:
{C8B522BC-5CF3-11CE-ADE5-00AA0044773D}
INIT_TIMEOUT 0x00000001 0x00000001 20
INIT_GENERALTIMEOUT 0x00000001 0x00000001 600
INIT_DATASOURCE 0 0 mfoledb.ini
INIT_LOCATION 0 0 E:\MapFrame\ugi\data_big
MfbSource::GetProperties() returned 0x00040eda
Requested:
{C8B522BB-5CF3-11CE-ADE5-00AA0044773D}
DBMSNAME
DBMSVER
PROVIDERNAME
PROVIDEROLEDBVER
CATALOGLOCATION
IDENTIFIERCASE
QUOTEDIDENTIFIERCASE
MULTIPLESTORAGEOBJECTS
OLEOBJECTS
STRUCTUREDSTORAGE
BYREFACCESSORS
SQLSUPPORT
CONCATNULLBEHAVIOR
NULLCOLLATION
TABLESTATISTICS
{2344480C-33A7-11D1-9B1A-006008268B9E}
ASYNCTXNCOMMIT
AUTH_CACHE_AUTHINFO
AUTH_ENCRYPT_PASSWORD
AUTH_INTEGRATED
AUTH_MASK_PASSWORD
AUTH_PASSWORD
BOOKMARKTYPE
{DF10CB94-35F6-11D2-9C54-00C04F7971D3}
ABORTPRESERVE
ACTIVESESSIONS
ASYNCTXNCOMMIT
AUTH_CACHE_AUTHINFO
AUTH_ENCRYPT_PASSWORD
AUTH_INTEGRATED
Returned:
{C8B522BB-5CF3-11CE-ADE5-00AA0044773D}
DBMSNAME 0 0 FieldSmart MFB
DBMSVER 0 0 01.00.0201
PROVIDERNAME 0 0 MFOLEDB.MFB
PROVIDEROLEDBVER 0 0 02.60
CATALOGLOCATION 0 0x00000001
IDENTIFIERCASE 0 0x00000001
QUOTEDIDENTIFIERCASE 0 0x00000001
MULTIPLESTORAGEOBJECTS 0 0x00000001
OLEOBJECTS 0 0x00000001
STRUCTUREDSTORAGE 0 0x00000001
BYREFACCESSORS 0 0 0
SQLSUPPORT 0 0 0
CONCATNULLBEHAVIOR 0 0x00000001
NULLCOLLATION 0 0 4
TABLESTATISTICS 0 0 1
{2344480C-33A7-11D1-9B1A-006008268B9E}
ASYNCTXNCOMMIT 0 0x00000001
AUTH_CACHE_AUTHINFO 0 0x00000001
AUTH_ENCRYPT_PASSWORD 0 0x00000001
AUTH_INTEGRATED 0 0x00000001
AUTH_MASK_PASSWORD 0 0x00000001
AUTH_PASSWORD 0 0x00000001
BOOKMARKTYPE 0 0x00000001
{DF10CB94-35F6-11D2-9C54-00C04F7971D3}
ABORTPRESERVE 0 0x00000001
ACTIVESESSIONS 0 0x00000001
ASYNCTXNCOMMIT 0 0x00000001
AUTH_CACHE_AUTHINFO 0 0x00000001
AUTH_ENCRYPT_PASSWORD 0 0x00000001
AUTH_INTEGRATED 0 0x00000001
MfbRowset::GetProperties() returned 0
Requested:
{C8B522BE-5CF3-11CE-ADE5-00AA0044773D}
BOOKMARKTYPE
Returned:
{C8B522BE-5CF3-11CE-ADE5-00AA0044773D}
BOOKMARKTYPE 0 0 1
MfbSource::SetProperties() returned 0x00040eda
Returned:
{C8B522BC-5CF3-11CE-ADE5-00AA0044773D}
INIT_TIMEOUT 0x00000001 0x00000001 20
INIT_GENERALTIMEOUT 0x00000001 0x00000001 600
INIT_DATASOURCE 0 0 mfoledb.ini
INIT_LOCATION 0 0 E:\MapFrame\ugi\data_big
================================